diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2005-12-22 23:37:24 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-12-22 16:35:37 -0800 |
commit | e6c310fd0d7384973efc6b1d5999a5e8a5b2f3bd (patch) | |
tree | c42a1205f99f13ed446054a2a316729f53942e41 | |
parent | GIT: Support [address] in URLs (diff) | |
download | tgif-e6c310fd0d7384973efc6b1d5999a5e8a5b2f3bd.tar.xz |
git-clone: Support changing the origin branch with -o
Earlier, git-clone stored upstream's master in the branch named 'origin',
possibly overwriting an existing such branch.
Now you can change it by calling git-clone with '-o <other_name>'.
[jc: added ref format check, subdirectory safety, documentation
and usage string.]
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | Documentation/git-clone.txt | 9 | ||||
-rwxr-xr-x | git-clone.sh | 17 |
2 files changed, 21 insertions, 5 deletions
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt index 8410a6d381..f943f267da 100644 --- a/Documentation/git-clone.txt +++ b/Documentation/git-clone.txt @@ -8,7 +8,7 @@ git-clone - Clones a repository. SYNOPSIS -------- -'git-clone' [-l [-s]] [-q] [-n] [-u <upload-pack>] <repository> [<directory>] +'git-clone' [-l [-s]] [-q] [-n] [-o <name>] [-u <upload-pack>] <repository> [<directory>] DESCRIPTION ----------- @@ -56,6 +56,13 @@ OPTIONS -n:: No checkout of HEAD is performed after the clone is complete. +-o <name>:: + Instead of using the branch name 'origin' to keep track + of the upstream repository, use <name> instead. Note + that the shorthand name stored in `remotes/origin` is + not affected, but the local branch name to pull the + remote `master` branch into is. + --upload-pack <upload-pack>:: -u <upload-pack>:: When given, and the repository to clone from is handled diff --git a/git-clone.sh b/git-clone.sh index 280cc2e81e..bfc6c2d79f 100755 --- a/git-clone.sh +++ b/git-clone.sh @@ -9,7 +9,7 @@ unset CDPATH usage() { - echo >&2 "Usage: $0 [-l [-s]] [-q] [-u <upload-pack>] [-n] <repo> [<dir>]" + echo >&2 "Usage: $0 [-l [-s]] [-q] [-u <upload-pack>] [-o <name>] [-n] <repo> [<dir>]" exit 1 } @@ -67,6 +67,7 @@ use_local=no local_shared=no no_checkout= upload_pack= +origin=origin while case "$#,$1" in 0,*) break ;; @@ -75,6 +76,14 @@ while *,-s|*,--s|*,--sh|*,--sha|*,--shar|*,--share|*,--shared) local_shared=yes; use_local=yes ;; *,-q|*,--quiet) quiet=-q ;; + 1,-o) usage;; + *,-o) + git-check-ref-format "$2" || { + echo >&2 "'$2' is not suitable for a branch name" + exit 1 + } + origin="$2"; shift + ;; 1,-u|1,--upload-pack) usage ;; *,-u|*,--upload-pack) shift @@ -208,14 +217,14 @@ then mkdir -p .git/remotes && echo >.git/remotes/origin \ "URL: $repo -Pull: $head_points_at:origin" && - cp ".git/refs/heads/$head_points_at" .git/refs/heads/origin && +Pull: $head_points_at:$origin" && + git-update-ref "refs/heads/$origin" $(git-rev-parse HEAD) && find .git/refs/heads -type f -print | while read ref do head=`expr "$ref" : '.git/refs/heads/\(.*\)'` && test "$head_points_at" = "$head" || - test "origin" = "$head" || + test "$origin" = "$head" || echo "Pull: ${head}:${head}" done >>.git/remotes/origin esac |