diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index c6dd71a7bcd0dfcb4691c9ca66a0c3a7bd4dcaae..25d13a1f5aaedd0378de7050bacdb028230a8bee 100644 (file)
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
static enum { ERROR, DROP, REWRITE } tag_of_filtered_mode = ABORT;
static int fake_missing_tagger;
static int no_data;
+static int full_tree = 0;
static int parse_opt_signed_tag_mode(const struct option *opt,
const char *arg, int unset)
message += 2;
if (commit->parents &&
- get_object_mark(&commit->parents->item->object) != 0) {
+ get_object_mark(&commit->parents->item->object) != 0 &&
+ !full_tree) {
parse_commit(commit->parents->item);
diff_tree_sha1(commit->parents->item->tree->object.sha1,
commit->tree->object.sha1, "", &rev->diffopt);
i++;
}
+ if (full_tree)
+ printf("deleteall\n");
log_tree_diff_flush(rev);
rev->diffopt.output_format = saved_output_format;
if (import_filename)
import_marks(import_filename);
+ if (import_filename && revs.prune_data)
+ full_tree = 1;
+
get_tags_and_duplicates(&revs.pending, &extra_refs);
if (prepare_revision_walk(&revs))