Skip to content

Commit 1d1cbe2

Browse files
committed
Merge branch 'jc/index-pack' into maint
Code clean-up. * jc/index-pack: index-pack: add a helper function to derive .idx/.keep filename index-pack: correct --keep[=<msg>]
2 parents 9fabc70 + bfee614 commit 1d1cbe2

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

builtin/index-pack.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1599,6 +1599,18 @@ static void show_pack_info(int stat_only)
15991599
}
16001600
}
16011601

1602+
static const char *derive_filename(const char *pack_name, const char *suffix,
1603+
struct strbuf *buf)
1604+
{
1605+
size_t len;
1606+
if (!strip_suffix(pack_name, ".pack", &len))
1607+
die(_("packfile name '%s' does not end with '.pack'"),
1608+
pack_name);
1609+
strbuf_add(buf, pack_name, len);
1610+
strbuf_addstr(buf, suffix);
1611+
return buf->buf;
1612+
}
1613+
16021614
int cmd_index_pack(int argc, const char **argv, const char *prefix)
16031615
{
16041616
int i, fix_thin_pack = 0, verify = 0, stat_only = 0;
@@ -1707,24 +1719,11 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
17071719
usage(index_pack_usage);
17081720
if (fix_thin_pack && !from_stdin)
17091721
die(_("--fix-thin cannot be used without --stdin"));
1710-
if (!index_name && pack_name) {
1711-
size_t len;
1712-
if (!strip_suffix(pack_name, ".pack", &len))
1713-
die(_("packfile name '%s' does not end with '.pack'"),
1714-
pack_name);
1715-
strbuf_add(&index_name_buf, pack_name, len);
1716-
strbuf_addstr(&index_name_buf, ".idx");
1717-
index_name = index_name_buf.buf;
1718-
}
1719-
if (keep_msg && !keep_name && pack_name) {
1720-
size_t len;
1721-
if (!strip_suffix(pack_name, ".pack", &len))
1722-
die(_("packfile name '%s' does not end with '.pack'"),
1723-
pack_name);
1724-
strbuf_add(&keep_name_buf, pack_name, len);
1725-
strbuf_addstr(&keep_name_buf, ".idx");
1726-
keep_name = keep_name_buf.buf;
1727-
}
1722+
if (!index_name && pack_name)
1723+
index_name = derive_filename(pack_name, ".idx", &index_name_buf);
1724+
if (keep_msg && !keep_name && pack_name)
1725+
keep_name = derive_filename(pack_name, ".keep", &keep_name_buf);
1726+
17281727
if (verify) {
17291728
if (!index_name)
17301729
die(_("--verify with no packfile name given"));

t/t5300-pack-object.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,12 @@ test_expect_success \
284284
git index-pack test-3.pack &&
285285
cmp test-3.idx test-3-${packname_3}.idx &&
286286
287+
cat test-1-${packname_1}.pack >test-4.pack &&
288+
rm -f test-4.keep &&
289+
git index-pack --keep=why test-4.pack &&
290+
cmp test-1-${packname_1}.idx test-4.idx &&
291+
test -f test-4.keep &&
292+
287293
:'
288294

289295
test_expect_success 'unpacking with --strict' '

0 commit comments

Comments
 (0)