Merge branch 'jk/bisect-peel-tag-fix'
"git bisect" reimplemented more in C during 2.30 timeframe did not take an annotated tag as a good/bad endpoint well. This regression has been corrected. * jk/bisect-peel-tag-fix: bisect: peel annotated tags to commits
This commit is contained in:
@ -874,12 +874,19 @@ static enum bisect_error bisect_state(struct bisect_terms *terms, const char **a
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
for (; argc; argc--, argv++) {
|
for (; argc; argc--, argv++) {
|
||||||
|
struct commit *commit;
|
||||||
|
|
||||||
if (get_oid(*argv, &oid)){
|
if (get_oid(*argv, &oid)){
|
||||||
error(_("Bad rev input: %s"), *argv);
|
error(_("Bad rev input: %s"), *argv);
|
||||||
oid_array_clear(&revs);
|
oid_array_clear(&revs);
|
||||||
return BISECT_FAILED;
|
return BISECT_FAILED;
|
||||||
}
|
}
|
||||||
oid_array_append(&revs, &oid);
|
|
||||||
|
commit = lookup_commit_reference(the_repository, &oid);
|
||||||
|
if (!commit)
|
||||||
|
die(_("Bad rev input (not a commit): %s"), *argv);
|
||||||
|
|
||||||
|
oid_array_append(&revs, &commit->object.oid);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strbuf_read_file(&buf, git_path_bisect_expected_rev(), 0) < the_hash_algo->hexsz ||
|
if (strbuf_read_file(&buf, git_path_bisect_expected_rev(), 0) < the_hash_algo->hexsz ||
|
||||||
|
@ -939,4 +939,16 @@ test_expect_success 'git bisect reset cleans bisection state properly' '
|
|||||||
test_path_is_missing ".git/BISECT_START"
|
test_path_is_missing ".git/BISECT_START"
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'bisect handles annotated tags' '
|
||||||
|
test_commit commit-one &&
|
||||||
|
git tag -m foo tag-one &&
|
||||||
|
test_commit commit-two &&
|
||||||
|
git tag -m foo tag-two &&
|
||||||
|
git bisect start &&
|
||||||
|
git bisect good tag-one &&
|
||||||
|
git bisect bad tag-two >output &&
|
||||||
|
bad=$(git rev-parse --verify tag-two^{commit}) &&
|
||||||
|
grep "$bad is the first bad commit" output
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Reference in New Issue
Block a user