aboutsummaryrefslogtreecommitdiffstats
path: root/packfile.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-07-19 11:30:19 -0700
committerJunio C Hamano <gitster@pobox.com>2019-07-19 11:30:19 -0700
commit4308d81d456c8c3ecc2c33af7f4d834de95130b9 (patch)
treefaf4ca256e9390ab147ce2e213179936a2e01a92 /packfile.c
parent9d418600f4d10dcbbfb0b5fdbc71d509e03ba719 (diff)
parent3612c2334af8b70137a2d3f5497b1b6f4e9762a2 (diff)
downloadgit-4308d81d456c8c3ecc2c33af7f4d834de95130b9.tar.gz
Merge branch 'ds/midx-expire-repack'
"git multi-pack-index" learned expire and repack subcommands. * ds/midx-expire-repack: t5319: use 'test-tool path-utils' instead of 'ls -l' t5319-multi-pack-index.sh: test batch size zero midx: add test that 'expire' respects .keep files multi-pack-index: test expire while adding packs midx: implement midx_repack() multi-pack-index: prepare 'repack' subcommand multi-pack-index: implement 'expire' subcommand midx: refactor permutation logic and pack sorting midx: simplify computation of pack name lengths multi-pack-index: prepare for 'expire' subcommand Docs: rearrange subcommands for multi-pack-index repack: refactor pack deletion for future use
Diffstat (limited to 'packfile.c')
-rw-r--r--packfile.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/packfile.c b/packfile.c
index c0d83fdfed..fc43a6c52c 100644
--- a/packfile.c
+++ b/packfile.c
@@ -355,6 +355,34 @@ void close_object_store(struct raw_object_store *o)
close_commit_graph(o);
}
+void unlink_pack_path(const char *pack_name, int force_delete)
+{
+ static const char *exts[] = {".pack", ".idx", ".keep", ".bitmap", ".promisor"};
+ int i;
+ struct strbuf buf = STRBUF_INIT;
+ size_t plen;
+
+ strbuf_addstr(&buf, pack_name);
+ strip_suffix_mem(buf.buf, &buf.len, ".pack");
+ plen = buf.len;
+
+ if (!force_delete) {
+ strbuf_addstr(&buf, ".keep");
+ if (!access(buf.buf, F_OK)) {
+ strbuf_release(&buf);
+ return;
+ }
+ }
+
+ for (i = 0; i < ARRAY_SIZE(exts); i++) {
+ strbuf_setlen(&buf, plen);
+ strbuf_addstr(&buf, exts[i]);
+ unlink(buf.buf);
+ }
+
+ strbuf_release(&buf);
+}
+
/*
* The LRU pack is the one with the oldest MRU window, preferring packs
* with no used windows, or the oldest mtime if it has no windows allocated.