This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: git mirror at gcc.gnu.org


On 06/10/09 02:43, Ian Lance Taylor wrote:
> fche has already installed git 1.6.3.2 in /usr/local/bin on sourceware.
> That is now the one you will get if you connect to port "git".  Hope
> nothing breaks.

Thanks.

I made a few changes that hopefully won't compromise existing clones:

0) Since when Daniel disabled his cron job to update the repository,
   mine had not actually been running because the crontab line was
   commented out.  I enabled it.

1) Set UseDeltaBaseOffset=true for slightly smaller packs
   The downside is that we loose compatibility with git versions
   older than 1.4.4.  Moreover, people fetching from dumb protocols
   will probably have to refetch from scratch.

2) Remove the local checkout and configure the repository as
   "bare=true"

3) I stupidly ran a "git gc" on the repository without specifying
   any parameters, which made the pack jump to a whopping 3.4GB.
   People fetching over git-aware protocols shouldn't notice
   anything unusual except, maybe, longer server-side packing time.
   Those stuck with http:// will have a bad surprise. /me ducks.
   I've now configured the default window and depth both to 100,
   and ran another repack from scratch which will take a long,
   long, long, long time.

4) I noticed we weren't actually doing "git update-server-info"
   anywhere, which means that those stuck with http:// are
   probably unable to be annoyed by my careless mistake anyway.
   I've now added it as the last step of my cron job
   ~bernie/bin/git-update-toolchain.sh

5) The repository was configured with HEAD pointing at the local branch
   "master", which git-svn doesn't know (or care) about.  To make
   changes appear there too, Daniel's update script did a "git rebase"
   after every fetch, which does not work in bare repositories.
   Now I made HEAD point at branch "trunk" instead, and make "trunk"
   just be an indirect ref for "remotes/trunk", which is what git-svn
   actually updates. Hopefully this change won't break existing
   checkouts, but one might still have to perform some manual trickery
   to rename their local branch "master" to "trunk", or map it to
   remotes/trunk in their fetch configuration.

6) As Daniel said, we are indeed already mirroring all branches from
   the SVN repository.  But those go to remotes/foo rather than foo,
   which most likely *your* git fetches aren't configured to consider.
   And gitweb doesn't show them either.  As a workaround, I manually
   added a few local branches pointing directly to the remote ones.
   I arbitrarily chose to export all those gcc-4_x-branch tags, but
   we could add them all with a script, and maybe rename them to
   cull that "-branch" postfix which has been quite redundant since
   when we switched to svn.

I sincerely apologize if these changes happen to hamper someone's
productivity for a while.  Cheer up!  Your temporary suffering is
for the long-term good! :-)

Local to remote branch mapping is one of the least understood design
aspects in git [*], and probably the steepest point of git's steep
learning curve.  It is especially unfortunate that git-svn exposes
it even more than usual.

[*] the git haters would simply call it "lack of design in git"

-- 
   // Bernie Innocenti - http://codewiz.org/
 \X/  Sugar Labs       - http://sugarlabs.org/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]