Skip to content

Commit 3b910d6

Browse files
peffgitster
authored andcommitted
clone: allow "--bare" with "-o"
We explicitly forbid the combination of "--bare" with "-o", but there doesn't seem to be any good reason to do so. The original logic came as part of e6489a1 (clone: do not accept more than one -o option., 2006-01-22), but that commit does not give any reason. Furthermore, the equivalent combination via config is allowed: git -c clone.defaultRemoteName=foo clone ... and works as expected. It may be that this combination was considered useless, because a bare clone does not set remote.origin.fetch (and hence there is no refs/remotes/origin hierarchy). But it does set remote.origin.url, and that name is visible to the user via "git fetch origin", etc. Let's allow the options to be used together, and switch the "forbid" test in t5606 to check that we use the requested name. That test came much later in 349cff7 (clone: add tests for --template and some disallowed option pairs, 2020-09-29), and does not offer any logic beyond "let's test what the code currently does". Reported-by: John A. Leuenhagen <[email protected]> Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent a0feb86 commit 3b910d6

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

builtin/clone.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -924,9 +924,6 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
924924
option_bare = 1;
925925

926926
if (option_bare) {
927-
if (option_origin)
928-
die(_("options '%s' and '%s %s' cannot be used together"),
929-
"--bare", "--origin", option_origin);
930927
if (real_git_dir)
931928
die(_("options '%s' and '%s' cannot be used together"), "--bare", "--separate-git-dir");
932929
option_no_checkout = 1;

t/t5606-clone-options.sh

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,12 @@ test_expect_success 'rejects invalid -o/--origin' '
4242
4343
'
4444

45-
test_expect_success 'disallows --bare with --origin' '
45+
test_expect_success 'clone --bare -o' '
4646
47-
test_must_fail git clone -o foo --bare parent clone-bare-o 2>err &&
48-
test_debug "cat err" &&
49-
test_i18ngrep -e "options .--bare. and .--origin foo. cannot be used together" err
47+
git clone -o foo --bare parent clone-bare-o &&
48+
(cd parent && pwd) >expect &&
49+
git -C clone-bare-o config remote.foo.url >actual &&
50+
test_cmp expect actual
5051
5152
'
5253

0 commit comments

Comments
 (0)