Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2022-02-02 05:37:29 +0300
committerJunio C Hamano <gitster@pobox.com>2022-02-02 21:02:27 +0300
commit7b90ab467a658b2fb1b7c15c7d634e06f35f4ef2 (patch)
tree223e2be7ced848f782226bc6bd984f065f0cf546 /log-tree.c
parentdb757e8b8d5527c195c461a04ec35d141ddea48e (diff)
log: clean unneeded objects during `log --remerge-diff`
The --remerge-diff option will need to create new blobs and trees representing the "automatic merge" state. If one is traversing a long project history, one can easily get hundreds of thousands of loose objects generated during `log --remerge-diff`. However, none of those loose objects are needed after we have completed our diff operation; they can be summarily deleted. Add a new helper function to tmp_objdir to discard all the contained objects, and call it after each merge is handled. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'log-tree.c')
-rw-r--r--log-tree.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/log-tree.c b/log-tree.c
index 8f762fb373..6b62ae1a6b 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -4,6 +4,7 @@
#include "diff.h"
#include "object-store.h"
#include "repository.h"
+#include "tmp-objdir.h"
#include "commit.h"
#include "tag.h"
#include "graph.h"
@@ -946,7 +947,12 @@ static int do_remerge_diff(struct rev_info *opt,
strbuf_release(&parent1_desc);
strbuf_release(&parent2_desc);
merge_finalize(&o, &res);
- /* TODO: clean up the temporary object directory */
+
+ /* Clean up the contents of the temporary object directory */
+ if (opt->remerge_objdir)
+ tmp_objdir_discard_objects(opt->remerge_objdir);
+ else
+ BUG("did a remerge diff without remerge_objdir?!?");
return !opt->loginfo;
}