Thread (58 messages) 58 messages, 2 authors, 2020-07-26

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 --packfile
s/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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help