Re: [PATCH v4 29/39] http-fetch: set up git directory before parsing pack hashes
From: Eric Sunshine <hidden>
Date: 2020-07-26 23:28:42
On Sun, Jul 26, 2020 at 3:56 PM brian m. carlson [off-list ref] 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/
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.
quoted hunk ↗ jump to hunk
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.