This is a series of small fixes and features for fast-export and
fast-import, mostly on the fast-export side.
Changes since v2 (full range-diff below):
* Dropped the final patch; going to try to use Peff's suggestion of
rev-list and diff-tree to get what I need instead
* Inserted a new patch at the beginning to convert pre-existing sha1
stuff to oid (rename sha1_to_hex() -> oid_to_hex(), rename
anonymize_sha1() to anonymize_oid(), etc.)
* Modified other patches in the series to add calls to oid_to_hex() rather
than sha1_to_hex()
Elijah Newren (11):
fast-export: convert sha1 to oid
git-fast-import.txt: fix documentation for --quiet option
git-fast-export.txt: clarify misleading documentation about rev-list
args
fast-export: use value from correct enum
fast-export: avoid dying when filtering by paths and old tags exist
fast-export: move commit rewriting logic into a function for reuse
fast-export: when using paths, avoid corrupt stream with non-existent
mark
fast-export: ensure we export requested refs
fast-export: add --reference-excluded-parents option
fast-import: remove unmaintained duplicate documentation
fast-export: add a --show-original-ids option to show original names
Documentation/git-fast-export.txt | 23 +++-
Documentation/git-fast-import.txt | 23 +++-
builtin/fast-export.c | 190 +++++++++++++++++++++---------
fast-import.c | 166 ++------------------------
t/t9350-fast-export.sh | 80 ++++++++++++-
5 files changed, 268 insertions(+), 214 deletions(-)
-: ---------- > 1: 4c3370c85f fast-export: convert sha1 to oid
1: 8870fb1340 = 2: 6ffa30e3c7 git-fast-import.txt: fix documentation for
--quiet option
2: 16d1c3e22d = 3: 1e278f009a git-fast-export.txt: clarify misleading
documentation about rev-list args
3: e19f6b36f9 = 4: 9d7b2aef49 fast-export: use value from correct enum
4: 2b305561d5 ! 5: b65a591d4d fast-export: avoid dying when filtering by
paths and old tags exist
@@ -29,7 +29,7 @@
- oid_to_hex(&tag->object.oid));
+ if (!p->parents) {
+ printf("reset %s\nfrom %s\n\n",
-+ name, sha1_to_hex(null_sha1));
++ name, oid_to_hex(&null_oid));
+ free(buf);
+ return;
+ }
5: 607b1dc2b2 ! 6: dde52c9cb6 fast-export: move commit rewriting logic into
a function for reuse
@@ -47,7 +47,7 @@
- break;
- if (!p->parents) {
- printf("reset %s\nfrom %s\n\n",
-- name, sha1_to_hex(null_sha1));
+- name, oid_to_hex(&null_oid));
- free(buf);
- return;
- }
@@ -55,7 +55,7 @@
+ p = rewrite_commit((struct commit *)tagged);
+ if (!p) {
+ printf("reset %s\nfrom %s\n\n",
-+ name, sha1_to_hex(null_sha1));
++ name, oid_to_hex(&null_oid));
+ free(buf);
+ return;
}
6: ec1862e858 ! 7: d9b2e326f0 fast-export: when using paths, avoid corrupt
stream with non-existent mark
@@ -35,7 +35,7 @@
+ * it.
+ */
+ printf("reset %s\nfrom %s\n\n",
-+ name, sha1_to_hex(null_sha1));
++ name, oid_to_hex(&null_oid));
+ continue;
+ }
printf("reset %s\nfrom :%d\n\n", name,
7: 9da26e3ccb ! 8: 9ddb155a70 fast-export: ensure we export requested refs
@@ -97,7 +97,7 @@
case OBJ_TAG:
handle_tag(name, (struct tag *)object);
@@
- name, sha1_to_hex(null_sha1));
+ name, oid_to_hex(&null_oid));
continue;
}
- printf("reset %s\nfrom :%d\n\n", name,
@@ -114,7 +114,7 @@
+ * like a ref deletion to me.
+ */
+ printf("reset %s\nfrom %s\n\n",
-+ name, sha1_to_hex(null_sha1));
++ name, oid_to_hex(&null_oid));
+ continue;
+ }
+
8: 7e5fe2f02e ! 9: 595d2e5d30 fast-export: add --reference-excluded-parents
option
@@ -117,9 +117,9 @@
+ printf(":%d\n", mark);
else
- printf("merge :%d\n", mark);
-+ printf("%s\n", sha1_to_hex(anonymize ?
-+ anonymize_sha1(&obj->oid) :
-+ obj->oid.hash));
++ printf("%s\n", oid_to_hex(anonymize ?
++ anonymize_oid(&obj->oid) :
++ &obj->oid));
i++;
}
@@ -138,16 +138,16 @@
+ * just means deletion of the ref.
*/
- printf("reset %s\nfrom %s\n\n",
-- name, sha1_to_hex(null_sha1));
+- name, oid_to_hex(&null_oid));
+ if (!reference_excluded_commits) {
+ /* delete the ref */
+ printf("reset %s\nfrom %s\n\n",
-+ name, sha1_to_hex(null_sha1));
++ name, oid_to_hex(&null_oid));
+ continue;
+ }
+ /* set ref to commit using oid, not mark */
+ printf("reset %s\nfrom %s\n\n", name,
-+ sha1_to_hex(commit->object.oid.hash));
++ oid_to_hex(&commit->object.oid));
continue;
}
@@ -156,7 +156,7 @@
N_("Apply refspec to exported refs")),
OPT_BOOL(0, "anonymize", &anonymize, N_("anonymize output")),
+ OPT_BOOL(0, "reference-excluded-parents",
-+ &reference_excluded_commits, N_("Reference parents
which are not in fast-export stream by sha1sum")),
++ &reference_excluded_commits, N_("Reference parents
which are not in fast-export stream by object id")),
+
OPT_END()
};
9: 14306a8436 = 10: 2686246a89 fast-import: remove unmaintained duplicate
documentation
10: 72487a61e4 ! 11: b78d548e7d fast-export: add a --show-original-ids option
to show original names
@@ -141,9 +141,9 @@
@@
OPT_BOOL(0, "anonymize", &anonymize, N_("anonymize output")),
OPT_BOOL(0, "reference-excluded-parents",
- &reference_excluded_commits, N_("Reference parents
which are not in fast-export stream by sha1sum")),
+ &reference_excluded_commits, N_("Reference parents
which are not in fast-export stream by object id")),
+ OPT_BOOL(0, "show-original-ids", &show_original_ids,
-+ N_("Show original sha1sums of blobs/commits")),
++ N_("Show original object ids of blobs/commits")),
OPT_END()
};
--
2.19.1.1063.g1796373474.dirty