Merge branch 'ps/commit-with-message-syntax-fix'

The syntax ":/<text>" to name the latest commit with the matching
text was broken with a recent change, which has been corrected.

* ps/commit-with-message-syntax-fix:
  object-name: fix reversed ordering with ":/<text>" revisions
maint
Junio C Hamano 2024-12-15 17:54:30 -08:00
commit 4007617fda
2 changed files with 17 additions and 2 deletions

View File

@ -1401,7 +1401,7 @@ static int get_oid_oneline(struct repository *r,
const char *prefix, struct object_id *oid,
const struct commit_list *list)
{
struct commit_list *copy = NULL;
struct commit_list *copy = NULL, **copy_tail = &copy;
const struct commit_list *l;
int found = 0;
int negative = 0;
@ -1423,7 +1423,7 @@ static int get_oid_oneline(struct repository *r,

for (l = list; l; l = l->next) {
l->item->object.flags |= ONELINE_SEEN;
commit_list_insert(l->item, &copy);
copy_tail = &commit_list_insert(l->item, copy_tail)->next;
}
while (copy) {
const char *p, *buf;

View File

@ -309,4 +309,19 @@ test_expect_success '--short= truncates to the actual hash length' '
test_cmp expect actual
'

test_expect_success ':/ and HEAD^{/} favor more recent matching commits' '
test_when_finished "rm -rf repo" &&
git init repo &&
(
cd repo &&
test_commit common-old &&
test_commit --no-tag common-new &&
git rev-parse HEAD >expect &&
git rev-parse :/common >actual &&
test_cmp expect actual &&
git rev-parse HEAD^{/common} >actual &&
test_cmp expect actual
)
'

test_done