diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2008-07-08 04:46:06 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-07-08 14:47:04 -0700 |
commit | 1db4a75c8d18d8827ac710e87219b349558d9196 (patch) | |
tree | 6c361b248445f35e3e5cae314cdcf68ca4960fc6 | |
parent | 0b294c0abf00a9cf7468e0ea62722ae23b0816cc (diff) | |
download | git-1db4a75c8d18d8827ac710e87219b349558d9196.tar.gz git-1db4a75c8d18d8827ac710e87219b349558d9196.tar.xz |
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 <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin-clone.c | 7 | ||||
-rwxr-xr-x | t/t5601-clone.sh | 20 |
2 files changed, 24 insertions, 3 deletions
diff --git a/builtin-clone.c b/builtin-clone.c index 7bcc664e4..7ee827526 100644 --- a/builtin-clone.c +++ b/builtin-clone.c @@ -337,6 +337,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) const struct ref *refs, *head_points_at, *remote_head, *mapped_refs; char branch_top[256], key[256], value[256]; struct strbuf reflog_msg; + struct transport *transport = NULL; struct refspec refspec; @@ -458,8 +459,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) refs = clone_local(path, git_dir); else { struct remote *remote = remote_get(argv[0]); - struct transport *transport = - transport_get(remote, remote->url[0]); + transport = transport_get(remote, remote->url[0]); if (!transport->get_refs_list || !transport->fetch) 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) option_no_checkout = 1; } + if (transport) + transport_unlock_pack(transport); + if (!option_no_checkout) { struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file)); struct unpack_trees_options opts; diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index b642fb260..d785b3df7 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -17,14 +17,32 @@ test_expect_success setup ' ' -test_expect_success 'clone with excess parameters' ' +test_expect_success 'clone with excess parameters (1)' ' + rm -fr dst && + test_must_fail git clone -n src dst junk + +' + +test_expect_success 'clone with excess parameters (2)' ' + + rm -fr dst && test_must_fail git clone -n "file://$(pwd)/src" dst junk ' +test_expect_success 'clone does not keep pack' ' + + rm -fr dst && + git clone -n "file://$(pwd)/src" dst && + ! test -f dst/file && + ! (echo dst/.git/objects/pack/pack-* | grep "\.keep") + +' + test_expect_success 'clone checks out files' ' + rm -fr dst && git clone src dst && test -f dst/file |