Merge branch 'jk/log-missing-default-HEAD'
"git init empty && git -C empty log" said "bad default revision 'HEAD'", which was found to be a bit confusing to new users. * jk/log-missing-default-HEAD: log: diagnose empty HEAD more clearly
This commit is contained in:
commit
699a0f3748
17
revision.c
17
revision.c
@ -2187,6 +2187,21 @@ static int handle_revision_pseudo_opt(const char *submodule,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void NORETURN diagnose_missing_default(const char *def)
|
||||
{
|
||||
unsigned char sha1[20];
|
||||
int flags;
|
||||
const char *refname;
|
||||
|
||||
refname = resolve_ref_unsafe(def, 0, sha1, &flags);
|
||||
if (!refname || !(flags & REF_ISSYMREF) || (flags & REF_ISBROKEN))
|
||||
die(_("your current branch appears to be broken"));
|
||||
|
||||
skip_prefix(refname, "refs/heads/", &refname);
|
||||
die(_("your current branch '%s' does not have any commits yet"),
|
||||
refname);
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse revision information, filling in the "rev_info" structure,
|
||||
* and removing the used arguments from the argument list.
|
||||
@ -2316,7 +2331,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
|
||||
struct object *object;
|
||||
struct object_context oc;
|
||||
if (get_sha1_with_context(revs->def, 0, sha1, &oc))
|
||||
die("bad default revision '%s'", revs->def);
|
||||
diagnose_missing_default(revs->def);
|
||||
object = get_reference(revs, revs->def, sha1, 0);
|
||||
add_pending_object_with_mode(revs, object, revs->def, oc.mode);
|
||||
}
|
||||
|
@ -894,4 +894,18 @@ test_expect_success 'log --graph --no-walk is forbidden' '
|
||||
test_must_fail git log --graph --no-walk
|
||||
'
|
||||
|
||||
test_expect_success 'log diagnoses bogus HEAD' '
|
||||
git init empty &&
|
||||
test_must_fail git -C empty log 2>stderr &&
|
||||
test_i18ngrep does.not.have.any.commits stderr &&
|
||||
echo 1234abcd >empty/.git/refs/heads/master &&
|
||||
test_must_fail git -C empty log 2>stderr &&
|
||||
test_i18ngrep broken stderr &&
|
||||
echo "ref: refs/heads/invalid.lock" >empty/.git/HEAD &&
|
||||
test_must_fail git -C empty log 2>stderr &&
|
||||
test_i18ngrep broken stderr &&
|
||||
test_must_fail git -C empty log --default totally-bogus 2>stderr &&
|
||||
test_i18ngrep broken stderr
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user