path: root/builtin/clone.c
diff options
authorSverre Rabbelier <>2010-03-29 16:48:23 (GMT)
committerJunio C Hamano <>2010-03-31 16:37:26 (GMT)
commit766ac6a6ba26b0d58c75234bb3553178eafa80b0 (patch)
treece6fbd09ebf87852b857539825a91f844b5f2384 /builtin/clone.c
parent87b3c0117a340df61bdbac6794611c74696bd42a (diff)
clone: pass the remote name to remote_get
Currently when using a remote helper to clone a repository, the remote helper will be passed the url of the target repository as first argument (which represents the name of the remote). This name is extracted from transport->remote->name, which is set by builtin/clone.c when it calls remote_get with argv[0] as argument. Fix this by passing the name remote will be set up as instead. However, setup_reference calls remote_get before the remote is added to the config file. This will result in an improperly configured remote (in memory) if later on remote_get is called with an argument that is not equal to the initial remote_get call in setup_reference. Fix this by delaying the remote_get call until after the remote has been added to the config file. Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'builtin/clone.c')
1 files changed, 4 insertions, 4 deletions
diff --git a/builtin/clone.c b/builtin/clone.c
index 05f8fb4..068d61f 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -470,9 +470,6 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
- if (option_reference)
- setup_reference(git_dir);
git_config(git_default_config, NULL);
if (option_bare) {
@@ -504,6 +501,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
+ if (option_reference)
+ setup_reference(git_dir);
fetch_pattern = value.buf;
refspec = parse_fetch_refspec(1, &fetch_pattern);
@@ -513,7 +513,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
refs = clone_local(path, git_dir);
mapped_refs = wanted_peer_refs(refs, refspec);
} else {
- struct remote *remote = remote_get(argv[0]);
+ struct remote *remote = remote_get(option_origin);
transport = transport_get(remote, remote->url[0]);
if (!transport->get_refs_list || !transport->fetch)