зеркало из 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 colon, followed by a slash, followed by a text, names
|
||||||
a commit whose commit message matches the specified regular expression.
|
a commit whose commit message matches the specified regular expression.
|
||||||
This name returns the youngest matching commit which is
|
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
|
commit message. To match messages starting with a string, one can use
|
||||||
e.g. ':/^foo'. The special sequence ':/!' is reserved for modifiers to what
|
e.g. ':/^foo'. The special sequence ':/!' is reserved for modifiers to what
|
||||||
is matched. ':/!-foo' performs a negative match, while ':/!!foo' matches a
|
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;
|
struct commit_list *list = NULL;
|
||||||
|
|
||||||
for_each_ref(handle_one_ref, &list);
|
for_each_ref(handle_one_ref, &list);
|
||||||
|
head_ref(handle_one_ref, &list);
|
||||||
commit_list_sort_by_date(&list);
|
commit_list_sort_by_date(&list);
|
||||||
return get_oid_oneline(name + 2, oid, 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 --
|
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' '
|
test_expect_success '"git log -- :/a" should not be ambiguous' '
|
||||||
git log -- :/a
|
git log -- :/a
|
||||||
'
|
'
|
||||||
|
|
Загрузка…
Ссылка в новой задаче