aboutsummaryrefslogtreecommitdiff
path: root/repack.c
diff options
context:
space:
mode:
Diffstat (limited to 'repack.c')
-rw-r--r--repack.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/repack.c b/repack.c
index 91b6e1cc09..3aaa351b5b 100644
--- a/repack.c
+++ b/repack.c
@@ -1,5 +1,9 @@
#include "git-compat-util.h"
+#include "midx.h"
+#include "odb.h"
+#include "packfile.h"
#include "repack.h"
+#include "repository.h"
#include "run-command.h"
void prepare_pack_objects(struct child_process *cmd,
@@ -44,3 +48,17 @@ void pack_objects_args_release(struct pack_objects_args *args)
free(args->threads);
list_objects_filter_release(&args->filter_options);
}
+
+void repack_remove_redundant_pack(struct repository *repo, const char *dir_name,
+ const char *base_name)
+{
+ struct strbuf buf = STRBUF_INIT;
+ struct odb_source *source = repo->objects->sources;
+ struct multi_pack_index *m = get_multi_pack_index(source);
+ strbuf_addf(&buf, "%s.pack", base_name);
+ if (m && source->local && midx_contains_pack(m, buf.buf))
+ clear_midx_file(repo);
+ strbuf_insertf(&buf, 0, "%s/", dir_name);
+ unlink_pack_path(buf.buf, 1);
+ strbuf_release(&buf);
+}