Re: [PATCH v4 29/39] http-fetch: set up git directory before parsing pack hashes
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jul 26, 2020, 23:28 UTC
- Message-ID
- <CAPig+cR4G5czLgAo=H-+HXOye+qCLmtUcE9-DKoh=+yptMitPw@mail.gmail.com>
- In-Reply-To
- <20200726195424.626969-30-sandals@crustytoothpaste.net>
On Sun, Jul 26, 2020 at 3:56 PM brian m. carlson <sandals@crustytoothpaste.net> wrote:
> In dd4b732df7 ("upload-pack: send part of packfile response as uri",
> 2020-06-10), the git http-fetch code learned how to take ac --packfiles/take\s+ac/take a/
Show 9 quoted lines
> option. This option takes an argument, which is the name of a packfile > hash, and parses it using parse_oid_hex. It does so before calling > setup_git_directory. > > However, in a SHA-256 repository this fails to work, since we have not > set the hash algorithm in use and parse_oid_hex fails as a consequence. > To ensure that we can parse packfile hashes of the right length, let's > set up the git directory before we start parsing arguments. > ---
Missing sign-off.
Show 11 quoted lines
> diff --git a/http-fetch.c b/http-fetch.c
> @@ -86,6 +86,8 @@ int cmd_main(int argc, const char **argv)
> + setup_git_directory();
> +
> while (arg < argc && argv[arg][0] == '-') {
> const char *p;
> @@ -115,8 +117,6 @@ int cmd_main(int argc, const char **argv)
> if (argc != arg + 2 - (commits_on_stdin || packfile))
> usage(http_fetch_usage);
>
> - setup_git_directory();This change has the unfortunate side-effect that "git http-fetch -h" will no longer work if setup_git_directory() fails, which could easily be the case if the user is trying to get help for the command from some arbitrary location in the filesystem.
It might be better to setup_git_directory() on-demand when it's needed by --packfile= rather than doing it unconditionally before the argument-parsing loop.