From abe549e1791822b3105648452b1f8907f8fdb26a Mon Sep 17 00:00:00 2001 From: Jonas Fonseca Date: Fri, 14 Mar 2008 22:35:24 +0100 Subject: [PATCH] shortlog: do not require to run from inside a git repository Once upon a time shortlog could be run from a non-git directory and still do its job. Fix this regression and add a small test for it. Signed-off-by: Jonas Fonseca Signed-off-by: Junio C Hamano --- builtin-shortlog.c | 4 +++- git.c | 2 +- t/t4201-shortlog.sh | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/builtin-shortlog.c b/builtin-shortlog.c index b22b0edd6..bd795b1db 100644 --- a/builtin-shortlog.c +++ b/builtin-shortlog.c @@ -229,7 +229,9 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) { struct shortlog log; struct rev_info rev; + int nongit; + prefix = setup_git_directory_gently(&nongit); shortlog_init(&log); /* since -n is a shadowed rev argument, parse our args first */ @@ -259,7 +261,7 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) die ("unrecognized argument: %s", argv[1]); /* assume HEAD if from a tty */ - if (!rev.pending.nr && isatty(0)) + if (!nongit && !rev.pending.nr && isatty(0)) add_head_to_pending(&rev); if (rev.pending.nr == 0) { read_from_stdin(&log); diff --git a/git.c b/git.c index 1e3eb1065..13de8018f 100644 --- a/git.c +++ b/git.c @@ -343,7 +343,7 @@ static void handle_internal_command(int argc, const char **argv) { "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE }, { "rm", cmd_rm, RUN_SETUP }, { "send-pack", cmd_send_pack, RUN_SETUP }, - { "shortlog", cmd_shortlog, RUN_SETUP | USE_PAGER }, + { "shortlog", cmd_shortlog, USE_PAGER }, { "show-branch", cmd_show_branch, RUN_SETUP }, { "show", cmd_show, RUN_SETUP | USE_PAGER }, { "status", cmd_status, RUN_SETUP | NEED_WORK_TREE }, diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh index 6d12efb74..eef4cafda 100755 --- a/t/t4201-shortlog.sh +++ b/t/t4201-shortlog.sh @@ -47,4 +47,9 @@ EOF test_expect_success 'shortlog wrapping' 'diff -u expect out' +git log HEAD > log +GIT_DIR=non-existing git shortlog -w < log > out + +test_expect_success 'shortlog from non-git directory' 'diff -u expect out' + test_done -- 2.30.2