# HEAD branch duplicated in remotes/origin

4 messages from 2006-06-08 to 2006-06-08. Participants: Uwe Zeisberger, Junio C Hamano.
Thread: https://gitlist.dev/t/4433

## Uwe Zeisberger, 2006-06-08 07:38

Subject: HEAD branch duplicated in remotes/origin
Message-ID: <20060608073857.GA5072@informatik.uni-freiburg.de>
URL: https://gitlist.dev/e/20060608073857.GA5072%40informatik.uni-freiburg.de

```
Hello,

when cloning with --use-separate-remote, $GITDIR/remotes/origin contains
two references to refs/heads/master.  This breaks `git fetch origin'.

uzeisberger@io:~/gsrc$ git --version
git version 1.4.0.rc2.ga95e

uzeisberger@io:~/gsrc$ git clone --use-separate-remote git://git.kernel.org/pub/scm/git/git.git git-copy
Checking files out...)
 100% (523/523) done

uzeisberger@io:~/gsrc$ cd git-copy

uzeisberger@io:~/gsrc/git-copy$ git fetch origin
error: no such remote ref refs/heads/master
Fetch failure: git://git.kernel.org/pub/scm/git/git.git

uzeisberger@io:~/gsrc/git-copy$ grep -n master .git/remotes/origin
2:Pull: refs/heads/master:refs/remotes/origin/master
12:Pull: refs/heads/master:refs/remotes/origin/master

uzeisberger@io:~/gsrc/git-copy$ sed -i 2d .git/remotes/origin

uzeisberger@io:~/gsrc/git-copy$ git fetch origin

uzeisberger@io:~/gsrc/git-copy$ 

I didn't look into it deeply, but I think this happens because the
remote HEAD is translated to refs/heads/master and added while master is
added once more while processing refs/heads/master explicitly.

Best regards
Uwe

-- 
Uwe Zeisberger

http://www.google.com/search?q=12+divided+by+3

```

## Junio C Hamano, 2006-06-08 08:17

Subject: Re: HEAD branch duplicated in remotes/origin
Message-ID: <7vverc9i4i.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vverc9i4i.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20060608073857.GA5072@informatik.uni-freiburg.de>

```
Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de> writes:

> when cloning with --use-separate-remote, $GITDIR/remotes/origin contains
> two references to refs/heads/master.

Thanks for noticing.

Very lightly tested but I think this should fix it.
-- >8 --
git-clone: fix duplicated "master" in $GIT_DIR/remotes/origin

Under --use-separate-remote we ended up duplicating the branch
remote HEAD pointed at in $GIT_DIR/remotes/origin file.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
diff --git a/git-clone.sh b/git-clone.sh
index de59904..64318b4 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -391,11 +391,16 @@ Pull: refs/heads/$head_points_at:$origin
 		(cd "$GIT_DIR/$remote_top" && find . -type f -print) |
 		while read dotslref
 		do
-			name=`expr "$dotslref" : './\(.*\)'` &&
-			test "$use_separate_remote" = '' && {
-				test "$head_points_at" = "$name" ||
-				test "$origin" = "$name"
-			} ||
+			name=`expr "$dotslref" : './\(.*\)'`
+			if test "z$head_points_at" = "z$name"
+			then
+				continue
+			fi
+			if test "$use_separate_remote" = '' &&
+			   test "z$origin" = "z$name"
+			then
+				continue
+			fi
 			echo "Pull: refs/heads/${name}:$remote_top/${name}"
 		done >>"$GIT_DIR/remotes/$origin" &&
 		case "$use_separate_remote" in

```

## Uwe Zeisberger, 2006-06-08 12:33

Subject: Re: HEAD branch duplicated in remotes/origin
Message-ID: <20060608123337.GA12456@informatik.uni-freiburg.de>
URL: https://gitlist.dev/e/20060608123337.GA12456%40informatik.uni-freiburg.de
In-Reply-To: <7vverc9i4i.fsf@assigned-by-dhcp.cox.net>

```
Hello Junio,

Junio C Hamano wrote:
> Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de> writes:
> 
> > when cloning with --use-separate-remote, $GITDIR/remotes/origin contains
> > two references to refs/heads/master.
> 
> Thanks for noticing.
> 
> Very lightly tested but I think this should fix it.
> -- >8 --
> git-clone: fix duplicated "master" in $GIT_DIR/remotes/origin
> 
> Under --use-separate-remote we ended up duplicating the branch
> remote HEAD pointed at in $GIT_DIR/remotes/origin file.
> 
> Signed-off-by: Junio C Hamano <junkio@cox.net>
> ---
> diff --git a/git-clone.sh b/git-clone.sh
> index de59904..64318b4 100755
> --- a/git-clone.sh
> +++ b/git-clone.sh
> @@ -391,11 +391,16 @@ Pull: refs/heads/$head_points_at:$origin
>  		(cd "$GIT_DIR/$remote_top" && find . -type f -print) |
>  		while read dotslref
>  		do
> -			name=`expr "$dotslref" : './\(.*\)'` &&
> -			test "$use_separate_remote" = '' && {
> -				test "$head_points_at" = "$name" ||
> -				test "$origin" = "$name"
> -			} ||
> +			name=`expr "$dotslref" : './\(.*\)'`
> +			if test "z$head_points_at" = "z$name"
> +			then
> +				continue
> +			fi
> +			if test "$use_separate_remote" = '' &&
> +			   test "z$origin" = "z$name"
> +			then
> +				continue
> +			fi
>  			echo "Pull: refs/heads/${name}:$remote_top/${name}"
>  		done >>"$GIT_DIR/remotes/$origin" &&
>  		case "$use_separate_remote" in
> 
I wonder if this is easier not to add the other duplicate.  That is let
this as it is and don't add the head HEAD points at.  Don't know, didn't
look into it.

Moreover, is it sound to error if a Pull: line is duplicated?  In my
eyes at least the error message is wrong/missleading.  Otherwise the
patch works for me, but probably I only did the same testing as you.

Best regards
Uwe

-- 
Uwe Zeisberger

cal 9 1752 | grep 10

```

## Junio C Hamano, 2006-06-08 16:39

Subject: Re: HEAD branch duplicated in remotes/origin
Message-ID: <7vpshj8uuj.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vpshj8uuj.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20060608123337.GA12456@informatik.uni-freiburg.de>

```
Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de> writes:

> I wonder if this is easier not to add the other duplicate.

Unfortunately the above is probably easier.  The other duplicate
is coming from the lowlevel code that makes sure each of the
fetch-pack parameters is not used to match more than once.  We
should fix it eventually, though.

```
