Merge branch 'nr/git-cd-to-a-directory'

Just like "make -C <directory>", make "git -C <directory> ..." to
go there before doing anything else.

* nr/git-cd-to-a-directory:
  t0056: "git -C" test updates
  git: run in a directory given with -C option
This commit is contained in:
Junio C Hamano
2013-09-20 12:35:42 -07:00
3 changed files with 111 additions and 2 deletions

13
git.c
View File

@ -7,7 +7,7 @@
#include "commit.h"
const char git_usage_string[] =
"git [--version] [--help] [-c name=value]\n"
"git [--version] [--help] [-C <path>] [-c name=value]\n"
" [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
" [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]\n"
" [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n"
@ -165,6 +165,17 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
set_alternate_shallow_file((*argv)[0]);
if (envchanged)
*envchanged = 1;
} else if (!strcmp(cmd, "-C")) {
if (*argc < 2) {
fprintf(stderr, "No directory given for -C.\n" );
usage(git_usage_string);
}
if (chdir((*argv)[1]))
die_errno("Cannot change to '%s'", (*argv)[1]);
if (envchanged)
*envchanged = 1;
(*argv)++;
(*argc)--;
} else {
fprintf(stderr, "Unknown option: %s\n", cmd);
usage(git_usage_string);