Antoine Pelisse <apelisse@xxxxxxxxx> writes: > fast-export can fail because of some pruned-reference when importing a > mark file. > > The problem happens in the following scenario: > > $ git fast-export --export-marks=MARKS master > (rewrite master) > $ git prune > $ git fast-export --import-marks=MARKS master > > This might fail if some references have been removed by prune > because some marks will refer to non-existing commits. > > Let's warn when we have a mark for a commit we don't know. > Also, increment the last_idnum before, so we don't override > the mark. Is this a safe and sane thing to do, and if so why? Could you describe that in the log message here? > Signed-off-by: Antoine Pelisse <apelisse@xxxxxxxxx> > --- > builtin/fast-export.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/builtin/fast-export.c b/builtin/fast-export.c > index 12220ad..141b245 100644 > --- a/builtin/fast-export.c > +++ b/builtin/fast-export.c > @@ -607,16 +607,19 @@ static void import_marks(char *input_file) > || *mark_end != ' ' || get_sha1(mark_end + 1, sha1)) > die("corrupt mark line: %s", line); > > + if (last_idnum < mark) > + last_idnum = mark; > + > object = parse_object(sha1); > - if (!object) > - die ("Could not read blob %s", sha1_to_hex(sha1)); > + if (!object) { > + warning("Could not read blob %s", sha1_to_hex(sha1)); > + continue; > + } > > if (object->flags & SHOWN) > error("Object %s already has a mark", sha1_to_hex(sha1)); > > mark_object(object, mark); > - if (last_idnum < mark) > - last_idnum = mark; > > object->flags |= SHOWN; > } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html