git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git-clone-pack: do not silently overwrite an existing branch 'origin'

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Dec 22, 2005, 22:37 UTC
Message-ID
<Pine.LNX.4.63.0512222325330.12241@wbgn013.biozentrum.uni-wuerzburg.de>
In-Reply-To
<7vu0d0hm53.fsf@assigned-by-dhcp.cox.net>
Hi,
On Thu, 22 Dec 2005, Junio C Hamano wrote:
Show 11 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > When cloning a repository which already contains a branch called 'origin',
> > do not silently overwrite it with the remote 'master' ref.
> 
> If we consider the "origin is special and is used to track
> upstream" convention pretty much ingrained, then unconditionally
> overwriting origin without saying anything is the right
> approach.  After all, you do not care what upstream your
> upstream is keeping track of, and you would want to use 'origin'
> for the usual purpose of keeping track of upstream.

As I said, I use git to keep track of a few CVS projects. I like to fetch all branches, one being the upstream branch, so that I can compare what changes not yet in upstream.

> I have a mild aversion to this change, though.
So don't.
> I'd much prefer the third approach I am too lazy to code, which lets you 
> say what local branch name instead of 'origin' to keep track of upstream 
> from 'git clone' command line.
---
[PATCH] 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>'.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
	Totally untested, but obviously correct :-)
	It still overwrites any existing ref of the same name silently.
 git-clone.sh |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/git-clone.sh b/git-clone.sh
index 280cc2e..87ad477 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -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,8 @@ while
         *,-s|*,--s|*,--sh|*,--sha|*,--shar|*,--share|*,--shared) 
           local_shared=yes; use_local=yes ;;
 	*,-q|*,--quiet) quiet=-q ;;
+	1,-o) usage;;
+	*,-o) origin="$2"; shift;;
 	1,-u|1,--upload-pack) usage ;;
 	*,-u|*,--upload-pack)
 		shift
@@ -208,14 +211,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" &&
+		cp ".git/refs/heads/$head_points_at" .git/refs/heads/$origin &&
 		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
Previous: Junio C Hamano
Message 3 of 3 in “git-clone-pack: do not silently overwrite an existing branch 'origin'”
  1. git-clone-pack: do not silently overwrite an existing branch 'origin'Johannes Schindelin, Dec 22, 2005
  2. Junio C HamanoDec 22, 2005
  3. Johannes SchindelinDec 22, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.