diff --git a/builtin/fast-export.c b/builtin/fast-export.c index 2547e6cb52..77dffd1ce3 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -526,10 +526,14 @@ static void get_tags_and_duplicates(struct rev_cmdline_info *info, typename(e->item->type)); continue; } - if (commit->util) - /* more than one name for the same object */ + + /* + * This ref will not be updated through a commit, lets make + * sure it gets properly updated eventually. + */ + if (commit->util || commit->object.flags & SHOWN) string_list_append(extra_refs, full_name)->util = commit; - else + if (!commit->util) commit->util = full_name; } } diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh index ece8fd5ab8..f387027c05 100755 --- a/t/t5801-remote-helpers.sh +++ b/t/t5801-remote-helpers.sh @@ -63,18 +63,6 @@ test_expect_success 'fetch new branch' ' compare_refs server HEAD local FETCH_HEAD ' -# -# This is only needed because of a bug not detected by this script. It will be -# fixed shortly, but for now lets not cause regressions. -# -test_expect_success 'bump commit in server' ' - (cd server && - git checkout master && - echo content >>file && - git commit -a -m four) && - compare_refs server HEAD server HEAD -' - test_expect_success 'fetch multiple branches' ' (cd local && git fetch @@ -170,4 +158,12 @@ test_expect_success 'push all with existing object' ' compare_refs local dup2 server dup2 ' +test_expect_success 'push ref with existing object' ' + (cd local && + git branch dup master && + git push origin dup + ) && + compare_refs local dup server dup +' + test_done diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh index c8e41c1d42..9320b4f94c 100755 --- a/t/t9350-fast-export.sh +++ b/t/t9350-fast-export.sh @@ -484,4 +484,19 @@ test_expect_success 'avoid uninteresting refs' ' test_cmp expected actual ' +cat > expected << EOF +reset refs/heads/master +from :14 + +EOF + +test_expect_success 'refs are updated even if no commits need to be exported' ' + > tmp-marks && + git fast-export --import-marks=tmp-marks \ + --export-marks=tmp-marks master > /dev/null && + git fast-export --import-marks=tmp-marks \ + --export-marks=tmp-marks master > actual && + test_cmp expected actual +' + test_done