зеркало из https://github.com/microsoft/git.git
Merge branch 'wc/find-commit-with-pattern-on-detached-head'
"git rev-parse ':/substring'" did not consider the history leading only to HEAD when looking for a commit with the given substring, when the HEAD is detached. This has been fixed. * wc/find-commit-with-pattern-on-detached-head: sha1-name.c: for ":/", find detached HEAD commits
This commit is contained in:
Коммит
53cae9e0f8
|
@ -184,7 +184,8 @@ existing tag object.
|
|||
A colon, followed by a slash, followed by a text, names
|
||||
a commit whose commit message matches the specified regular expression.
|
||||
This name returns the youngest matching commit which is
|
||||
reachable from any ref. The regular expression can match any part of the
|
||||
reachable from any ref, including HEAD.
|
||||
The regular expression can match any part of the
|
||||
commit message. To match messages starting with a string, one can use
|
||||
e.g. ':/^foo'. The special sequence ':/!' is reserved for modifiers to what
|
||||
is matched. ':/!-foo' performs a negative match, while ':/!!foo' matches a
|
||||
|
|
|
@ -1650,6 +1650,7 @@ static int get_oid_with_context_1(const char *name,
|
|||
struct commit_list *list = NULL;
|
||||
|
||||
for_each_ref(handle_one_ref, &list);
|
||||
head_ref(handle_one_ref, &list);
|
||||
commit_list_sort_by_date(&list);
|
||||
return get_oid_oneline(name + 2, oid, list);
|
||||
}
|
||||
|
|
|
@ -25,6 +25,32 @@ test_expect_success '"git log :/a -- " should not be ambiguous' '
|
|||
git log :/a --
|
||||
'
|
||||
|
||||
test_expect_success '"git log :/detached -- " should find a commit only in HEAD' '
|
||||
test_when_finished "git checkout master" &&
|
||||
git checkout --detach &&
|
||||
# Must manually call `test_tick` instead of using `test_commit`,
|
||||
# because the latter additionally creates a tag, which would make
|
||||
# the commit reachable not only via HEAD.
|
||||
test_tick &&
|
||||
git commit --allow-empty -m detached &&
|
||||
test_tick &&
|
||||
git commit --allow-empty -m something-else &&
|
||||
git log :/detached --
|
||||
'
|
||||
|
||||
test_expect_success '"git log :/detached -- " should not find an orphaned commit' '
|
||||
test_must_fail git log :/detached --
|
||||
'
|
||||
|
||||
test_expect_success '"git log :/detached -- " should find HEAD only of own worktree' '
|
||||
git worktree add other-tree HEAD &&
|
||||
git -C other-tree checkout --detach &&
|
||||
test_tick &&
|
||||
git -C other-tree commit --allow-empty -m other-detached &&
|
||||
git -C other-tree log :/other-detached -- &&
|
||||
test_must_fail git log :/other-detached --
|
||||
'
|
||||
|
||||
test_expect_success '"git log -- :/a" should not be ambiguous' '
|
||||
git log -- :/a
|
||||
'
|
||||
|
|
Загрузка…
Ссылка в новой задаче