diff options
-rw-r--r-- | builtin/fast-export.c | 11 | ||||
-rwxr-xr-x | t/t5801-remote-helpers.sh | 8 | ||||
-rwxr-xr-x | t/t9350-fast-export.sh | 30 |
3 files changed, 45 insertions, 4 deletions
diff --git a/builtin/fast-export.c b/builtin/fast-export.c index 191936c17..2547e6cb5 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -474,18 +474,21 @@ static void handle_tag(const char *name, struct tag *tag) (int)message_size, (int)message_size, message ? message : ""); } -static void get_tags_and_duplicates(struct object_array *pending, +static void get_tags_and_duplicates(struct rev_cmdline_info *info, struct string_list *extra_refs) { struct tag *tag; int i; - for (i = 0; i < pending->nr; i++) { - struct object_array_entry *e = pending->objects + i; + for (i = 0; i < info->nr; i++) { + struct rev_cmdline_entry *e = info->rev + i; unsigned char sha1[20]; struct commit *commit; char *full_name; + if (e->flags & UNINTERESTING) + continue; + if (dwim_ref(e->name, strlen(e->name), sha1, &full_name) != 1) continue; @@ -681,7 +684,7 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix) if (import_filename && revs.prune_data.nr) full_tree = 1; - get_tags_and_duplicates(&revs.pending, &extra_refs); + get_tags_and_duplicates(&revs.cmdline, &extra_refs); if (prepare_revision_walk(&revs)) die("revision walk setup failed"); diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh index 12ae25664..ece8fd5ab 100755 --- a/t/t5801-remote-helpers.sh +++ b/t/t5801-remote-helpers.sh @@ -162,4 +162,12 @@ test_expect_failure 'pushing without marks' ' compare_refs local2 HEAD server HEAD ' +test_expect_success 'push all with existing object' ' + (cd local && + git branch dup2 master && + git push origin --all + ) && + compare_refs local dup2 server dup2 +' + test_done diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh index 1f598622a..c8e41c1d4 100755 --- a/t/t9350-fast-export.sh +++ b/t/t9350-fast-export.sh @@ -454,4 +454,34 @@ test_expect_success 'test bidirectionality' ' git fast-import --export-marks=marks-cur --import-marks=marks-cur ' +cat > expected << EOF +blob +mark :13 +data 5 +bump + +commit refs/heads/master +mark :14 +author A U Thor <author@example.com> 1112912773 -0700 +committer C O Mitter <committer@example.com> 1112912773 -0700 +data 5 +bump +from :12 +M 100644 :13 file + +EOF + +test_expect_success 'avoid uninteresting refs' ' + > tmp-marks && + git fast-export --import-marks=tmp-marks \ + --export-marks=tmp-marks master > /dev/null && + git tag v1.0 && + git branch uninteresting && + echo bump > file && + git commit -a -m bump && + git fast-export --import-marks=tmp-marks \ + --export-marks=tmp-marks ^uninteresting ^v1.0 master > actual && + test_cmp expected actual +' + test_done |