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


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