diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-07-19 21:30:19 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-07-19 21:30:19 +0300 |
commit | 4308d81d456c8c3ecc2c33af7f4d834de95130b9 (patch) | |
tree | faf4ca256e9390ab147ce2e213179936a2e01a92 /packfile.c | |
parent | 9d418600f4d10dcbbfb0b5fdbc71d509e03ba719 (diff) | |
parent | 3612c2334af8b70137a2d3f5497b1b6f4e9762a2 (diff) |
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.c | 28 |
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. |