summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jonathan Nieder <jrnieder@gmail.com>2009-11-09 09:04:59 -0600
committerLibravatar Junio C Hamano <gitster@pobox.com>2009-11-10 11:11:21 -0800
commit616f86d71325da1ce692f8e878fe066758f88554 (patch)
tree2004fc5b276ad315350bb01f879b6869c16deede
parentMerge branch 'jn/maint-http-fetch-mingw' into jn/help-everywhere (diff)
downloadtgif-616f86d71325da1ce692f8e878fe066758f88554.tar.xz
Let 'git http-fetch -h' show usage outside any git repository
Delay search for a git directory until option parsing has finished. None of the functions used in option parsing look for or read any files other than stdin, so this is safe. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--http-fetch.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/http-fetch.c b/http-fetch.c
index 88f7dc8845..ffd0ad7e29 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -2,6 +2,9 @@
#include "exec_cmd.h"
#include "walker.h"
+static const char http_fetch_usage[] = "git http-fetch "
+"[-c] [-t] [-a] [-v] [--recover] [-w ref] [--stdin] commit-id url";
+
int main(int argc, const char **argv)
{
const char *prefix;
@@ -21,8 +24,6 @@ int main(int argc, const char **argv)
int get_recover = 0;
git_extract_argv0_path(argv[0]);
- prefix = setup_git_directory();
- git_config(git_default_config, NULL);
while (arg < argc && argv[arg][0] == '-') {
if (argv[arg][1] == 't') {
@@ -38,6 +39,8 @@ int main(int argc, const char **argv)
} else if (argv[arg][1] == 'w') {
write_ref = &argv[arg + 1];
arg++;
+ } else if (argv[arg][1] == 'h') {
+ usage(http_fetch_usage);
} else if (!strcmp(argv[arg], "--recover")) {
get_recover = 1;
} else if (!strcmp(argv[arg], "--stdin")) {
@@ -45,10 +48,8 @@ int main(int argc, const char **argv)
}
arg++;
}
- if (argc < arg + 2 - commits_on_stdin) {
- usage("git http-fetch [-c] [-t] [-a] [-v] [--recover] [-w ref] [--stdin] commit-id url");
- return 1;
- }
+ if (argc != arg + 2 - commits_on_stdin)
+ usage(http_fetch_usage);
if (commits_on_stdin) {
commits = walker_targets_stdin(&commit_id, &write_ref);
} else {
@@ -56,6 +57,11 @@ int main(int argc, const char **argv)
commits = 1;
}
url = argv[arg];
+
+ prefix = setup_git_directory();
+
+ git_config(git_default_config, NULL);
+
if (url && url[strlen(url)-1] != '/') {
rewritten_url = xmalloc(strlen(url)+2);
strcpy(rewritten_url, url);