Subject: Re: [PATCH] cg-pull to stop treating "master" specially, fix fetch_local for .git/HEAD

From: Pavel Roskin <[email-masked]>
Date: Thu, 10 Nov 2005 19:14:35 -0500

On Fri, 2005-11-11 at 00:40 +0100, Petr Baudis wrote: 
> Dear diary, on Fri, Nov 11, 2005 at 12:26:18AM CET, I got a letter
> where Josef Weidendorfer <[email-masked]> said that...
> > Why would anybody want to fetch the current upstream HEAD at cg-pull
> > time? If you do this, and you have no control on the upstream
> > repository, "origin" will jump randomly around after cg-pull, depending
> > on the current HEAD of the origin repository.
> 
> In public repositories, you usually set the HEAD once and it stays
> there, or when you switch it, you are really careful about it.

Correct.  But if it's a concern, I think we could make some
improvements.  Following approaches could be tried (starting from top,
using following steps as a fallback):

1) Use recorded branch, i.e. the branch name that was used in cg-clone.

2) Check a file specifying the default branch for cloning (let's call it
e.g. .git/default_export).  Record branch name.

3) If cg-switch is implemented, another file would be likely used to
specify the default branch for local operations
(e.g. .git/default_branch).  Use it.  Record branch name.

4) If .git/HEAD can be recognized as link (we may need to eliminate
symlinks for that to work over remote transport), use the branch it
points to.  Record branch name.

5) If .git/HEAD cannot be recognized as link, use it as the branch to
clone.  Don't record the branch name.  (I'm not sure if we really want
that - it's good to know what branch we are using).

6) Use "master" branch.  Record branch name.

-- 
Regards,
Pavel Roskin