Skip to content

Commit

Permalink
Merge branch 'mb/local-clone-after-applying-insteadof'
Browse files Browse the repository at this point in the history
Apply the "if cloning from a local disk, physically copy repository
using hardlinks, unless otherwise told not to with --no-local"
optimization when url.*.insteadOf mechanism rewrites a "git clone
$URL" that refers to a repository over the network to a clone from
a local disk.

* mb/local-clone-after-applying-insteadof:
  use local cloning if insteadOf makes a local URL
  • Loading branch information
Junio C Hamano committed Jul 23, 2014
2 parents c3d2bc7 + f38aa83 commit bc88def
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 bc88def

Please sign in to comment.