[PATCH] fast-import: checkpoint: dump branches/tags/marks even if object_count==0
- From
Eric Rannaud <e@nanocritical.com>
- Date
- Sep 26, 2017, 03:30 UTC
- Message-ID
- <598f0addb8b1a5dd535b5bea5f2685ab4c3eb2b0.1506396652.git.e@nanocritical.com>
The checkpoint command cycles packfiles if object_count != 0, a sensible test or there would be no pack files to write. Since 820b931012, the command also dumps branches, tags and marks, but still conditionally. However, it is possible for a command stream to modify refs or create marks without creating any new objects.
For example, reset a branch:
$ git fast-import reset refs/heads/master from refs/heads/master^
checkpoint
but refs/heads/master remains unchanged.
Other example: a commit command that re-creates an object that already exists in the object database.
This fix unconditionally calls dump_{branches,tags,marks}() for all checkpoint commands. dump_branches() and dump_tags() are cheap to call in the case of a no-op.
Signed-off-by: Eric Rannaud <e@nanocritical.com> --- fast-import.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/fast-import.c b/fast-import.c index 35bf671f12c4..d5e4cf0bad41 100644 --- a/fast-import.c +++ b/fast-import.c @@ -3189,10 +3189,10 @@ static void checkpoint(void) checkpoint_requested = 0; if (object_count) { cycle_packfile(); - dump_branches(); - dump_tags(); - dump_marks(); } + dump_branches(); + dump_tags(); + dump_marks(); } static void parse_checkpoint(void)
-- 2.14.1