Browse Source

Make git-clone --use-separate-remote the default

We've talked about this for quite some time on the list, and it
is a sane thing to do for a repository with an associcated
working tree.

For somebody who wants to use the traditional layout, there is a
backward compatibility option --use-immingled-remote, but it is
expected to be removed before the next major release.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Petr Baudis 18 years ago committed by Junio C Hamano
parent
commit
7182135189
  1. 24
      Documentation/git-clone.txt
  2. 14
      git-clone.sh

24
Documentation/git-clone.txt

@ -11,7 +11,8 @@ SYNOPSIS @@ -11,7 +11,8 @@ SYNOPSIS
[verse]
'git-clone' [--template=<template_directory>] [-l [-s]] [-q] [-n] [--bare]
[-o <name>] [-u <upload-pack>] [--reference <repository>]
[--use-separate-remote] <repository> [<directory>]
[--use-separate-remote | --use-immingled-remote] <repository>
[<directory>]

DESCRIPTION
-----------
@ -71,9 +72,13 @@ OPTIONS @@ -71,9 +72,13 @@ OPTIONS
Make a 'bare' GIT repository. That is, instead of
creating `<directory>` and placing the administrative
files in `<directory>/.git`, make the `<directory>`
itself the `$GIT_DIR`. This implies `-n` option. When
this option is used, neither the `origin` branch nor the
default `remotes/origin` file is created.
itself the `$GIT_DIR`. This obviously implies the `-n`
because there is nowhere to check out the working tree.
Also the branch heads at the remote are copied directly
to corresponding local branch heads, without mapping
them to `refs/remotes/origin/`. When this option is
used, neither the `origin` branch nor the default
`remotes/origin` file is created.

--origin <name>::
-o <name>::
@ -97,8 +102,15 @@ OPTIONS @@ -97,8 +102,15 @@ OPTIONS

--use-separate-remote::
Save remotes heads under `$GIT_DIR/remotes/origin/` instead
of `$GIT_DIR/refs/heads/`. Only the master branch is saved
in the latter.
of `$GIT_DIR/refs/heads/`. Only the local master branch is
saved in the latter. This is the default.

--use-immingled-remote::
Save remotes heads in the same namespace as the local
heads, `$GIT_DIR/refs/heads/'. In regular repositories,
this is a legacy setup git-clone created by default in
older Git versions, and will be removed before the next
major release.

<repository>::
The (possibly remote) repository to clone from. It can

14
git-clone.sh

@ -14,7 +14,7 @@ die() { @@ -14,7 +14,7 @@ die() {
}

usage() {
die "Usage: $0 [--template=<template_directory>] [--use-separate-remote] [--reference <reference-repo>] [--bare] [-l [-s]] [-q] [-u <upload-pack>] [--origin <name>] [-n] <repo> [<dir>]"
die "Usage: $0 [--template=<template_directory>] [--use-immingled-remote] [--reference <reference-repo>] [--bare] [-l [-s]] [-q] [-u <upload-pack>] [--origin <name>] [-n] <repo> [<dir>]"
}

get_repo_base() {
@ -115,7 +115,7 @@ bare= @@ -115,7 +115,7 @@ bare=
reference=
origin=
origin_override=
use_separate_remote=
use_separate_remote=t
while
case "$#,$1" in
0,*) break ;;
@ -134,7 +134,10 @@ while @@ -134,7 +134,10 @@ while
template="$1" ;;
*,-q|*,--quiet) quiet=-q ;;
*,--use-separate-remote)
# default
use_separate_remote=t ;;
*,--use-immingled-remote)
use_separate_remote= ;;
1,--reference) usage ;;
*,--reference)
shift; reference="$1" ;;
@ -169,18 +172,15 @@ repo="$1" @@ -169,18 +172,15 @@ repo="$1"
test -n "$repo" ||
die 'you must specify a repository to clone.'

# --bare implies --no-checkout
# --bare implies --no-checkout and --use-immingled-remote
if test yes = "$bare"
then
if test yes = "$origin_override"
then
die '--bare and --origin $origin options are incompatible.'
fi
if test t = "$use_separate_remote"
then
die '--bare and --use-separate-remote options are incompatible.'
fi
no_checkout=yes
use_separate_remote=
fi

if test -z "$origin"

Loading…
Cancel
Save