Skip to content

Commit 1db4a75

Browse files
spearcegitster
authored andcommitted
Remove unnecessary pack-*.keep file after successful git-clone
Once a clone is successful we no longer need to hold onto the .keep file created by the transport. Delete the file so we can later repack the complete repository. Signed-off-by: Shawn O. Pearce <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 0b294c0 commit 1db4a75

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

builtin-clone.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
337337
const struct ref *refs, *head_points_at, *remote_head, *mapped_refs;
338338
char branch_top[256], key[256], value[256];
339339
struct strbuf reflog_msg;
340+
struct transport *transport = NULL;
340341

341342
struct refspec refspec;
342343

@@ -458,8 +459,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
458459
refs = clone_local(path, git_dir);
459460
else {
460461
struct remote *remote = remote_get(argv[0]);
461-
struct transport *transport =
462-
transport_get(remote, remote->url[0]);
462+
transport = transport_get(remote, remote->url[0]);
463463

464464
if (!transport->get_refs_list || !transport->fetch)
465465
die("Don't know how to clone %s", transport->url);
@@ -529,6 +529,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
529529
option_no_checkout = 1;
530530
}
531531

532+
if (transport)
533+
transport_unlock_pack(transport);
534+
532535
if (!option_no_checkout) {
533536
struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
534537
struct unpack_trees_options opts;

t/t5601-clone.sh

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,32 @@ test_expect_success setup '
1717
1818
'
1919

20-
test_expect_success 'clone with excess parameters' '
20+
test_expect_success 'clone with excess parameters (1)' '
2121
22+
rm -fr dst &&
23+
test_must_fail git clone -n src dst junk
24+
25+
'
26+
27+
test_expect_success 'clone with excess parameters (2)' '
28+
29+
rm -fr dst &&
2230
test_must_fail git clone -n "file://$(pwd)/src" dst junk
2331
2432
'
2533

34+
test_expect_success 'clone does not keep pack' '
35+
36+
rm -fr dst &&
37+
git clone -n "file://$(pwd)/src" dst &&
38+
! test -f dst/file &&
39+
! (echo dst/.git/objects/pack/pack-* | grep "\.keep")
40+
41+
'
42+
2643
test_expect_success 'clone checks out files' '
2744
45+
rm -fr dst &&
2846
git clone src dst &&
2947
test -f dst/file
3048

0 commit comments

Comments
 (0)