On Fri, Feb 27, 2009 at 12:31:22AM +0100, Johannes Schindelin wrote: > Somehow --no-hardlinks got broken by making clone a builtin. This > was discovered during my work on --depth being ignored for local > clones. > > There will be a test case that tests for --no-hardlinks in conjunction > with --depth, so this patch is not accompanied by a separate test. Hmm. But --no-hardlinks has an effect later, in copy_or_link_directory, making it just do a copy. So it _does_ work, just not in the way you expect. I think to turn off local shortcuts entirely, --no-local would probably make more sense. IOW, something like this: --- diff --git a/builtin-clone.c b/builtin-clone.c index c338910..7c6f59f 100644 --- a/builtin-clone.c +++ b/builtin-clone.c @@ -35,7 +35,8 @@ static const char * const builtin_clone_usage[] = { }; static int option_quiet, option_no_checkout, option_bare, option_mirror; -static int option_local, option_no_hardlinks, option_shared; +static int option_local = -1; +static int option_no_hardlinks, option_shared; static char *option_template, *option_reference, *option_depth; static char *option_origin = NULL; static char *option_upload_pack = "git-upload-pack"; @@ -229,7 +230,7 @@ static void copy_or_link_directory(struct strbuf *src, struct strbuf *dest) if (!option_no_hardlinks) { if (!link(src->buf, dest->buf)) continue; - if (option_local) + if (option_local == 1) die("failed to create link %s", dest->buf); option_no_hardlinks = 1; } @@ -511,7 +512,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) refspec.src = src_ref_prefix; refspec.dst = branch_top.buf; - if (path && !is_bundle) + if (option_local != 0 && path && !is_bundle) refs = clone_local(path, git_dir); else { struct remote *remote = remote_get(argv[0]); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html