Skip to content

Commit 0628e25

Browse files
cswareethomson
authored andcommitted
Fix parsing rev with reflog of HEAD (e.g., HEAD@{3})
Fixes issue libgit2#6156. Signed-off-by: Sven Strickroth <email@cs-ware.de>
1 parent f02bcf7 commit 0628e25

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/libgit2/revparse.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,11 @@ static int retrieve_revobject_from_reflog(git_object **out, git_reference **base
268268
int error = -1;
269269

270270
if (*base_ref == NULL) {
271-
if ((error = git_reference_dwim(&ref, repo, identifier)) < 0)
271+
if (position > 0 &&
272+
(!strcmp(identifier, "HEAD"))) {
273+
if ((error = git_reference_lookup(&ref, repo, "HEAD")) < 0)
274+
return error;
275+
} else if ((error = git_reference_dwim(&ref, repo, identifier)) < 0)
272276
return error;
273277
} else {
274278
ref = *base_ref;

tests/libgit2/refs/revparse.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,9 @@ void test_refs_revparse__ordinal(void)
304304
test_object("@{0}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
305305
test_object("@{1}", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
306306

307+
test_object("HEAD@{0}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
308+
test_object("HEAD@{4}", "5b5b025afb0b4c913b4c338a42934a3863bf3644");
309+
307310
test_object("master@{0}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
308311
test_object("master@{1}", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");
309312
test_object("heads/master@{1}", "be3563ae3f795b2b4353bcce3a527ad0a4f7f644");

0 commit comments

Comments
 (0)