Code

Cloning from a repo without "current branch"
authorNanako Shiraishi <nanako3@bluebottle.com>
Sat, 16 Jun 2007 22:26:08 +0000 (15:26 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 20 Jun 2007 23:33:24 +0000 (16:33 -0700)
If the remote repository does not have a "current branch", git-clone
was confused and did not set up the resulting new repository
correctly.  It did not reset HEAD from the default 'master', and did
not write the SHA1 to the master branch.

Signed-off-by: Nanako Shiraishi <nanako3@bluebottle.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-clone.sh

index 3a410624d374e9d02b305a25469176e4d4e725e6..bd44ce1c84175e9cce97489a363fe340b74b7f23 100755 (executable)
@@ -377,6 +377,13 @@ then
                )
        )
 
+       # Upstream URL
+       git-config remote."$origin".url "$repo" &&
+
+       # Set up the mappings to track the remote branches.
+       git-config remote."$origin".fetch \
+               "+refs/heads/*:$remote_top/*" '^$' &&
+
        # Write out remote.$origin config, and update our "$head_points_at".
        case "$head_points_at" in
        ?*)
@@ -384,21 +391,20 @@ then
                git-symbolic-ref HEAD "refs/heads/$head_points_at" &&
 
                # Tracking branch for the primary branch at the remote.
-               origin_track="$remote_top/$head_points_at" &&
                git-update-ref HEAD "$head_sha1" &&
 
-               # Upstream URL
-               git-config remote."$origin".url "$repo" &&
-
-               # Set up the mappings to track the remote branches.
-               git-config remote."$origin".fetch \
-                       "+refs/heads/*:$remote_top/*" '^$' &&
                rm -f "refs/remotes/$origin/HEAD"
                git-symbolic-ref "refs/remotes/$origin/HEAD" \
                        "refs/remotes/$origin/$head_points_at" &&
 
                git-config branch."$head_points_at".remote "$origin" &&
                git-config branch."$head_points_at".merge "refs/heads/$head_points_at"
+               ;;
+       '')
+               # Source had detached HEAD pointing nowhere
+               git-update-ref --no-deref HEAD "$head_sha1" &&
+               rm -f "refs/remotes/$origin/HEAD"
+               ;;
        esac
 
        case "$no_checkout" in