Skip to content

Commit

Permalink
use local cloning if insteadOf makes a local URL
Browse files Browse the repository at this point in the history
Move the is_local logic to the place where origin remote has been setup and
check if the remote url can be used to do local cloning.

This saves a lot of space (and time) in some of the mirroring scenarios that
involve insteadOf rewrites.

Signed-off-by: Michael Barabanov <michael.barabanov@windriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
michaelwrs authored and gitster committed Jul 17, 2014
1 parent f2c9f21 commit f38aa83
Showing 1 changed file with 13 additions and 12 deletions.
25 changes: 13 additions & 12 deletions builtin/clone.c
Original file line number Diff line number Diff line change
Expand Up @@ -799,18 +799,6 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
die(_("repository '%s' does not exist"), repo_name);
else
repo = repo_name;
is_local = option_local != 0 && path && !is_bundle;
if (is_local) {
if (option_depth)
warning(_("--depth is ignored in local clones; use file:// instead."));
if (!access(mkpath("%s/shallow", path), F_OK)) {
if (option_local > 0)
warning(_("source repository is shallow, ignoring --local"));
is_local = 0;
}
}
if (option_local > 0 && !is_local)
warning(_("--local is ignored"));

/* no need to be strict, transport_set_option() will validate it again */
if (option_depth && atoi(option_depth) < 1)
Expand Down Expand Up @@ -903,6 +891,19 @@ int cmd_clone(int argc, const char **argv, const char *prefix)

remote = remote_get(option_origin);
transport = transport_get(remote, remote->url[0]);
path = get_repo_path(remote->url[0], &is_bundle);
is_local = option_local != 0 && path && !is_bundle;
if (is_local) {
if (option_depth)
warning(_("--depth is ignored in local clones; use file:// instead."));
if (!access(mkpath("%s/shallow", path), F_OK)) {
if (option_local > 0)
warning(_("source repository is shallow, ignoring --local"));
is_local = 0;
}
}
if (option_local > 0 && !is_local)
warning(_("--local is ignored"));
transport->cloning = 1;

if (!transport->get_refs_list || (!is_local && !transport->fetch))
Expand Down

0 comments on commit f38aa83

Please sign in to comment.