зеркало из https://github.com/microsoft/git.git
Merge branch 'jk/ignore-broken-tags-when-ignoring-missing-links'
Tag objects, which are not reachable from any ref, that point at missing objects were mishandled by "git gc" and friends (they should silently be ignored instead) * jk/ignore-broken-tags-when-ignoring-missing-links: revision.c: ignore broken tags with ignore_missing_links
This commit is contained in:
Коммит
b42b41b75a
|
@ -230,7 +230,7 @@ static struct commit *handle_commit(struct rev_info *revs,
|
|||
die("bad tag");
|
||||
object = parse_object(&tag->tagged->oid);
|
||||
if (!object) {
|
||||
if (flags & UNINTERESTING)
|
||||
if (revs->ignore_missing_links || (flags & UNINTERESTING))
|
||||
return NULL;
|
||||
die("bad object %s", oid_to_hex(&tag->tagged->oid));
|
||||
}
|
||||
|
|
|
@ -129,7 +129,7 @@ for repack in '' true; do
|
|||
'
|
||||
done
|
||||
|
||||
test_expect_success 'do not complain about existing broken links' '
|
||||
test_expect_success 'do not complain about existing broken links (commit)' '
|
||||
cat >broken-commit <<-\EOF &&
|
||||
tree 0000000000000000000000000000000000000001
|
||||
parent 0000000000000000000000000000000000000002
|
||||
|
@ -144,4 +144,29 @@ test_expect_success 'do not complain about existing broken links' '
|
|||
test_must_be_empty stderr
|
||||
'
|
||||
|
||||
test_expect_success 'do not complain about existing broken links (tree)' '
|
||||
cat >broken-tree <<-\EOF &&
|
||||
100644 blob 0000000000000000000000000000000000000003 foo
|
||||
EOF
|
||||
tree=$(git mktree --missing <broken-tree) &&
|
||||
git gc 2>stderr &&
|
||||
git cat-file -e $tree &&
|
||||
test_must_be_empty stderr
|
||||
'
|
||||
|
||||
test_expect_success 'do not complain about existing broken links (tag)' '
|
||||
cat >broken-tag <<-\EOF &&
|
||||
object 0000000000000000000000000000000000000004
|
||||
type commit
|
||||
tag broken
|
||||
tagger whatever <whatever@example.com> 1234 -0000
|
||||
|
||||
this is a broken tag
|
||||
EOF
|
||||
tag=$(git hash-object -t tag -w broken-tag) &&
|
||||
git gc 2>stderr &&
|
||||
git cat-file -e $tag &&
|
||||
test_must_be_empty stderr
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче