Commit 4efd6563cab0caeeeb442b688523a7683cc20174

Edward Thomson 2022-02-03T16:39:26

Merge pull request #6196 from libgit2/ethomson/at_revparse revparse: support bare '@'

diff --git a/src/revparse.c b/src/revparse.c
index 5d3ff77..9bc28e9 100644
--- a/src/revparse.c
+++ b/src/revparse.c
@@ -799,6 +799,9 @@ static int revparse(
 				if (temp_object != NULL)
 					base_rev = temp_object;
 				break;
+			} else if (spec[pos+1] == '\0') {
+				spec = "HEAD";
+				break;
 			}
 			/* fall through */
 
diff --git a/tests/refs/revparse.c b/tests/refs/revparse.c
index 5fb7585..0bd2ae5 100644
--- a/tests/refs/revparse.c
+++ b/tests/refs/revparse.c
@@ -881,3 +881,10 @@ void test_refs_revparse__uneven_sizes(void)
 	test_object("a65fedf39aefe402d3bb6e24df4d",
 				"a65fedf39aefe402d3bb6e24df4d4f5fe4547750");
 }
+
+void test_refs_revparse__parses_at_head(void)
+{
+	test_id("HEAD", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750", NULL, GIT_REVSPEC_SINGLE);
+	test_id("@{0}", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750", NULL, GIT_REVSPEC_SINGLE);
+	test_id("@", "a65fedf39aefe402d3bb6e24df4d4f5fe4547750", NULL, GIT_REVSPEC_SINGLE);
+}