This allows things like 'git -C /somewhere pull' without specifying both --work-tree and --git-dir. Signed-off-by: kevin brintnall <kbrint@xxxxxxxxx> --- git.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) diff --git a/git.c b/git.c index c2b181e..b218bfe 100644 --- a/git.c +++ b/git.c @@ -5,7 +5,7 @@ #include "run-command.h" const char git_usage_string[] = - "git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]"; + "git [--version] [--exec-path[=GIT_EXEC_PATH]] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [-C BASE_DIR] [--help] COMMAND [ARGS]"; const char git_more_info_string[] = "See 'git help COMMAND' for more information on a specific command."; @@ -116,6 +116,16 @@ static int handle_options(const char*** argv, int* argc, int* envchanged) setenv(GIT_DIR_ENVIRONMENT, getcwd(git_dir, sizeof(git_dir)), 0); if (envchanged) *envchanged = 1; + } else if (!strcmp(cmd, "-C")) { + char *dir = (*argv)[1]; + if (*argc < 2) { + fprintf(stderr, "No directory given for -C"); + usage(git_usage_string); + } + if (chdir(dir)) + die("Cannot change to %s: %s", dir, strerror(errno)); + (*argv)++; + (*argc)--; } else { fprintf(stderr, "Unknown option: %s\n", cmd); usage(git_usage_string); -- 1.6.1.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html