Browse Source

fast-export: avoid importing blob marks

We want to be able to import, and then export, using the same marks, so
that we don't push things that the other side already received.

Unfortunately, fast-export doesn't store blobs in the marks, but
fast-import does. This creates a mismatch when fast export is reusing a
mark that was previously stored by fast-import.

There is no point in one tool saving blobs, and the other not, but for
now let's just check in fast-export that the objects are indeed commits.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Felipe Contreras 13 years ago committed by Junio C Hamano
parent
commit
5d3698ffb4
  1. 4
      builtin/fast-export.c
  2. 14
      t/t9350-fast-export.sh

4
builtin/fast-export.c

@ -614,6 +614,10 @@ static void import_marks(char *input_file) @@ -614,6 +614,10 @@ static void import_marks(char *input_file)
if (object->flags & SHOWN)
error("Object %s already has a mark", sha1_to_hex(sha1));

if (object->type != OBJ_COMMIT)
/* only commits */
continue;

mark_object(object, mark);
if (last_idnum < mark)
last_idnum = mark;

14
t/t9350-fast-export.sh

@ -440,4 +440,18 @@ test_expect_success 'fast-export quotes pathnames' ' @@ -440,4 +440,18 @@ test_expect_success 'fast-export quotes pathnames' '
)
'

test_expect_success 'test bidirectionality' '
>marks-cur &&
>marks-new &&
git init marks-test &&
git fast-export --export-marks=marks-cur --import-marks=marks-cur --branches | \
git --git-dir=marks-test/.git fast-import --export-marks=marks-new --import-marks=marks-new &&
(cd marks-test &&
git reset --hard &&
echo Wohlauf > file &&
git commit -a -m "back in time") &&
git --git-dir=marks-test/.git fast-export --export-marks=marks-new --import-marks=marks-new --branches | \
git fast-import --export-marks=marks-cur --import-marks=marks-cur
'

test_done

Loading…
Cancel
Save