mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
fast-export: Omit tags that tag trees
Commit c0582c53bc
introduced logic to just
omit tags that point to tree objects. However, these objects were still
being output and were pointing at "mark :0", which caused fast-import to
crash. This patch makes sure such tags (including deeper nestings such
as tags of tags of trees), are omitted.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
668f3aa776
commit
02c48cd69b
@ -289,6 +289,21 @@ static void handle_tag(const char *name, struct tag *tag)
|
||||
char *buf;
|
||||
const char *tagger, *tagger_end, *message;
|
||||
size_t message_size = 0;
|
||||
struct object *tagged;
|
||||
|
||||
/* Trees have no identifer in fast-export output, thus we have no way
|
||||
* to output tags of trees, tags of tags of trees, etc. Simply omit
|
||||
* such tags.
|
||||
*/
|
||||
tagged = tag->tagged;
|
||||
while (tagged->type == OBJ_TAG) {
|
||||
tagged = ((struct tag *)tagged)->tagged;
|
||||
}
|
||||
if (tagged->type == OBJ_TREE) {
|
||||
warning("Omitting tag %s,\nsince tags of trees (or tags of tags of trees, etc.) are not supported.",
|
||||
sha1_to_hex(tag->object.sha1));
|
||||
return;
|
||||
}
|
||||
|
||||
buf = read_sha1_file(tag->object.sha1, &type, &size);
|
||||
if (!buf)
|
||||
|
@ -271,8 +271,14 @@ test_expect_success 'set-up a few more tags for tag export tests' '
|
||||
git tag -a tag-obj_tag-obj -m "tagging a tag" tree_tag-obj
|
||||
'
|
||||
|
||||
test_expect_success 'tree_tag' '
|
||||
mkdir result &&
|
||||
(cd result && git init) &&
|
||||
git fast-export tree_tag > fe-stream &&
|
||||
(cd result && git fast-import < ../fe-stream)
|
||||
'
|
||||
|
||||
# NEEDSWORK: not just check return status, but validate the output
|
||||
test_expect_success 'tree_tag' 'git fast-export tree_tag'
|
||||
test_expect_success 'tree_tag-obj' 'git fast-export tree_tag-obj'
|
||||
test_expect_success 'tag-obj_tag' 'git fast-export tag-obj_tag'
|
||||
test_expect_success 'tag-obj_tag-obj' 'git fast-export tag-obj_tag-obj'
|
||||
|
Loading…
Reference in New Issue
Block a user