summaryrefslogtreecommitdiff
path: root/http-fetch.c
diff options
context:
space:
mode:
authorbrian m. carlson <sandals@crustytoothpaste.net>2020-07-29 23:14:18 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-07-30 16:16:48 (GMT)
commit439d3a17b66d7e2f15fac72960a09261b72ac0d7 (patch)
treeb23f7b05904130463ec89ac1ed458c4520dfecdb /http-fetch.c
parent6c2adf80e9734f42f241fea1c45a5d519737f030 (diff)
downloadgit-439d3a17b66d7e2f15fac72960a09261b72ac0d7.zip
git-439d3a17b66d7e2f15fac72960a09261b72ac0d7.tar.gz
git-439d3a17b66d7e2f15fac72960a09261b72ac0d7.tar.bz2
http-fetch: set up git directory before parsing pack hashes
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 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. Since we still want to allow the invocation of -h to print the help when we're not in a repository, gracefully handle us being outside of one and produce an error after argument parsing has finished. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Reviewed-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'http-fetch.c')
-rw-r--r--http-fetch.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/http-fetch.c b/http-fetch.c
index 1df376e..c4ccc5f 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -84,8 +84,11 @@ int cmd_main(int argc, const char **argv)
int get_verbosely = 0;
int get_recover = 0;
int packfile = 0;
+ int nongit;
struct object_id packfile_hash;
+ setup_git_directory_gently(&nongit);
+
while (arg < argc && argv[arg][0] == '-') {
const char *p;
@@ -115,7 +118,8 @@ int cmd_main(int argc, const char **argv)
if (argc != arg + 2 - (commits_on_stdin || packfile))
usage(http_fetch_usage);
- setup_git_directory();
+ if (nongit)
+ die(_("not a git repository"));
git_config(git_default_config, NULL);