git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 8/8] fast-export: handle nested tags

From
Elijah Newren <newren@gmail.com>
Date
Sep 25, 2019, 01:40 UTC
Message-ID
<20190925014005.17056-9-newren@gmail.com>
In-Reply-To
<20190925014005.17056-1-newren@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
---
 builtin/fast-export.c  | 30 ++++++++++++++++++------------
 t/t9350-fast-export.sh |  2 +-
 2 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index d32e1e9327..58a74de42a 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -843,22 +843,28 @@ static void handle_tag(const char *name, struct tag *tag)
 			free(buf);
 			return;
 		case REWRITE:
-			if (tagged->type != OBJ_COMMIT) {
-				die("tag %s tags unexported %s!",
-				    oid_to_hex(&tag->object.oid),
-				    type_name(tagged->type));
-			}
-			p = rewrite_commit((struct commit *)tagged);
-			if (!p) {
-				printf("reset %s\nfrom %s\n\n",
-				       name, oid_to_hex(&null_oid));
-				free(buf);
-				return;
+			if (tagged->type == OBJ_TAG && !mark_tags) {
+				die(_("Error: Cannot export nested tags unless --mark-tags is specified."));
+			} else if (tagged->type == OBJ_COMMIT) {
+				p = rewrite_commit((struct commit *)tagged);
+				if (!p) {
+					printf("reset %s\nfrom %s\n\n",
+					       name, oid_to_hex(&null_oid));
+					free(buf);
+					return;
+				}
+				tagged_mark = get_object_mark(&p->object);
+			} else {
+				/* tagged->type is either OBJ_BLOB or OBJ_TAG */
+				tagged_mark = get_object_mark(tagged);
 			}
-			tagged_mark = get_object_mark(&p->object);
 		}
 	}
 
+	if (tagged->type == OBJ_TAG) {
+		printf("reset %s\nfrom %s\n\n",
+		       name, oid_to_hex(&null_oid));
+	}
 	if (starts_with(name, "refs/tags/"))
 		name += 10;
 	printf("tag %s\n", name);
diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh
index 9ab281e4b9..2e4e214815 100755
--- a/t/t9350-fast-export.sh
+++ b/t/t9350-fast-export.sh
@@ -567,7 +567,7 @@ test_expect_success 'handling tags of blobs' '
 	test_cmp expect actual
 '
 
-test_expect_failure 'handling nested tags' '
+test_expect_success 'handling nested tags' '
 	git tag -a -m "This is a nested tag" nested muss &&
 	git fast-export --mark-tags nested >output &&
 	grep "^from $ZERO_OID$" output &&
-- 
2.23.0.177.g8af0b3ca64
Previous: Elijah NewrenNext: Elijah Newren
Message 9 of 33 in “fast export/import: handle nested tags, improve incremental exports”
  1. 0/8 fast export/import: handle nested tags, improve incremental exportsElijah Newren, Sep 25, 2019
  2. 1/8 fast-export: fix exporting a tag and nothing elseElijah Newren, Sep 25, 2019
  3. 2/8 fast-import: fix handling of deleted tagsElijah Newren, Sep 25, 2019
  4. 3/8 fast-import: allow tags to be identified by mark labelsElijah Newren, Sep 25, 2019
  5. 4/8 fast-import: add support for new 'alias' commandElijah Newren, Sep 25, 2019
  6. 6/8 fast-export: allow user to request tags be marked with --mark-tagsElijah Newren, Sep 25, 2019
  7. 5/8 fast-export: add support for --import-marks-if-existsElijah Newren, Sep 25, 2019
  8. 7/8 t9350: add tests for tags of things other than a commitElijah Newren, Sep 25, 2019
  9. 8/8 fast-export: handle nested tagsElijah Newren, Sep 25, 2019
  10. 0/8 fast export/import: handle nested tags, improve incremental exportsElijah Newren, Sep 30, 2019
  11. 1/8 fast-export: fix exporting a tag and nothing elseElijah Newren, Sep 30, 2019
  12. 2/8 fast-import: fix handling of deleted tagsElijah Newren, Sep 30, 2019
  13. René ScharfeOct 3, 2019
  14. 3/8 fast-import: allow tags to be identified by mark labelsElijah Newren, Sep 30, 2019
  15. 4/8 fast-import: add support for new 'alias' commandElijah Newren, Sep 30, 2019
  16. 5/8 fast-export: add support for --import-marks-if-existsElijah Newren, Sep 30, 2019
  17. 6/8 fast-export: allow user to request tags be marked with --mark-tagsElijah Newren, Sep 30, 2019
  18. 7/8 t9350: add tests for tags of things other than a commitElijah Newren, Sep 30, 2019
  19. 8/8 fast-export: handle nested tagsElijah Newren, Sep 30, 2019
  20. Elijah NewrenOct 2, 2019
  21. Junio C HamanoOct 2, 2019
  22. Elijah NewrenOct 2, 2019
  23. Junio C HamanoOct 3, 2019
  24. 0/8 fast export/import: handle nested tags, improve incremental exportsElijah Newren, Oct 3, 2019
  25. 1/8 fast-export: fix exporting a tag and nothing elseElijah Newren, Oct 3, 2019
  26. 2/8 fast-import: fix handling of deleted tagsElijah Newren, Oct 3, 2019
  27. 3/8 fast-import: allow tags to be identified by mark labelsElijah Newren, Oct 3, 2019
  28. 4/8 fast-import: add support for new 'alias' commandElijah Newren, Oct 3, 2019
  29. 5/8 fast-export: add support for --import-marks-if-existsElijah Newren, Oct 3, 2019
  30. 7/8 t9350: add tests for tags of things other than a commitElijah Newren, Oct 3, 2019
  31. 8/8 fast-export: handle nested tagsElijah Newren, Oct 3, 2019
  32. 6/8 fast-export: allow user to request tags be marked with --mark-tagsElijah Newren, Oct 3, 2019
  33. Junio C HamanoOct 4, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.