--separate-git-dir was added to clone with the repository away from
standard position <worktree>/.git. It does not make sense to use it
without creating working directory.
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
---
On Sun, Jan 6, 2013 at 4:16 PM, Jonathan Nieder [off-list ref] wrote:
> Duy Nguyen wrote:
>
>> And
>> because junk_work_tree is not set up for --bare, I guess we still need
>> to fix "--bare --separate-git-dir" case, or forbid it because i'm not
>> sure if that case makes sense at all.
>
> Forbidding it makes sense to me. If some day we want a git command to
> create a .git file, I don't think it should be spelled as "git clone
> --bare --separate-git-dir <repo>".
That command does not work because --separate-git-dir requires an
argument in addition to <repo>, which is taken as the target repo.
Still it's hard to find a use case for
git clone --bare --separate-git-dir <real-repo> <symlink-repo>
> In the meantime,
>
> printf '%s\n' 'gitdir: /path/to/repo' >repo.git
>
> works fine.
Yeah. A separate clone operation following by that printf should be
clearer.
builtin/clone.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/builtin/clone.c b/builtin/clone.c
index ec2f75b..360e430 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -704,6 +704,12 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
if (option_origin)
die(_("--bare and --origin %s options are incompatible."),
option_origin);
+ if (real_git_dir)
+ /*
+ * If you lift this restriction, remember to
+ * clean .git in this case in remove_junk_on_signal
+ */
+ die(_("--bare and --separate-git-dir are incompatible."));
option_no_checkout = 1;
}
--
1.8.0.rc2.23.g1fb49df