]> git.ipfire.org Git - thirdparty/git.git/commit - t/t9350-fast-export.sh
fast-export: when using paths, avoid corrupt stream with non-existent mark
authorElijah Newren <newren@gmail.com>
Fri, 16 Nov 2018 07:59:52 +0000 (23:59 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sat, 17 Nov 2018 09:43:51 +0000 (18:43 +0900)
commitcd13762d8f837b6339b7d9f3090c0de44d3e01aa
treef1e0061321aa3f8fe3bba58c59769547a57bfc0e
parentf129c4275c81e908c1d14d1ac1e72f720e2aebb7
fast-export: when using paths, avoid corrupt stream with non-existent mark

If file paths are specified to fast-export and multiple refs point to a
commit that does not touch any of the relevant file paths, then
fast-export can hit problems.  fast-export has a list of additional refs
that it needs to explicitly set after exporting all blobs and commits,
and when it tries to get_object_mark() on the relevant commit, it can
get a mark of 0, i.e. "not found", because the commit in question did
not touch the relevant paths and thus was not exported.  Trying to
import a stream with a mark corresponding to an unexported object will
cause fast-import to crash.

Avoid this problem by taking the commit the ref points to and finding an
ancestor of it that was exported, and make the ref point to that commit
instead.

Signed-off-by: Elijah Newren <newren@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fast-export.c
t/t9350-fast-export.sh