Skip to content

Commit

Permalink
Remove unnecessary pack-*.keep file after successful git-clone
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Jul 8, 2008
1 parent 0b294c0 commit 1db4a75
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 3 deletions.
7 changes: 5 additions & 2 deletions builtin-clone.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down
20 changes: 19 additions & 1 deletion t/t5601-clone.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 1db4a75

Please sign in to comment.