Skip to content

Commit 55d12c2

Browse files
committed
Merge branch 'wm/shortlog-hash'
Teaches 'shortlog' to explicitly use SHA-1 when operating outside of a repository. * wm/shortlog-hash: builtin/shortlog: explicitly set hash algo when there is no repo
2 parents fcaac14 + b330016 commit 55d12c2

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

builtin/shortlog.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,18 @@ int cmd_shortlog(int argc,
407407

408408
struct parse_opt_ctx_t ctx;
409409

410+
/*
411+
* NEEDSWORK: Later on we'll call parse_revision_opt which relies on
412+
* the hash algorithm being set but since we are operating outside of a
413+
* Git repository we cannot determine one. This is only needed because
414+
* parse_revision_opt expects hexsz for --abbrev which is irrelevant
415+
* for shortlog outside of a git repository. For now explicitly set
416+
* SHA1, but ideally the parsing machinery would be split between
417+
* git/nongit so that we do not have to do this.
418+
*/
419+
if (nongit && !the_hash_algo)
420+
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
421+
410422
git_config(git_default_config, NULL);
411423
shortlog_init(&log);
412424
repo_init_revisions(the_repository, &rev, prefix);

t/t4201-shortlog.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,10 @@ test_expect_success 'shortlog from non-git directory refuses extra arguments' '
143143
test_grep "too many arguments" out
144144
'
145145

146+
test_expect_success 'shortlog --author from non-git directory does not segfault' '
147+
nongit git shortlog --author=author </dev/null
148+
'
149+
146150
test_expect_success 'shortlog should add newline when input line matches wraplen' '
147151
cat >expect <<\EOF &&
148152
A U Thor (2):

0 commit comments

Comments
 (0)