Subject: Re: Additional remote on a local clone. Where do the objects go?

From: Stephen Kelly <[email-masked]>
Date: Wed, 01 Sep 2010 13:51:03 +0200

Tay Ray Chuan wrote:

> Hi,
> 
> On Wed, Sep 1, 2010 at 3:12 PM, Stephen Kelly <[email-masked]> wrote:
>> git clone git://gitorious.org/qt/qt.git qtrepo
>> cd qtrepo
>> git checkout -b 4.7 origin/4.7
>> git checkout -b 4.6 origin/4.6
>> git clone qtrepo qt46
>> cd qt46 && git checkout -b 4.6 origin/4.6
>> cd ..
>> git clone qtrepo qt47
>> cd qt46 && git checkout -b 4.7 origin/4.7
>> cd ..
> 
> Two improvements: shared objects, and configuring git-pull:

I'm confused. I thought the local clone already used shared objects?

> 
>   git clone git://gitorious.org/qt/qt.git qtrepo
>   git init qt46
>   PARENT_GIT=$(pwd)/qtrepo/.git
>   cd qt46
> 
>   # use of shared objects - tell git where to find the "missing" objects
>   cat $PARENT_GIT/objects > .git/objects/info/alternates
> 
>   # setup of git pull
>   cat <<EOF >> .git/config
> [remote "parent"]
>   url = $PARENT_GIT
> [branch "master"]
>   remote = parent
>   merge = refs/remotes/origin/4.6
> EOF

So this will pull from the gitorious remote and store the objects in the 
parent git from where they are shared with this local clone?

Which is the better solution between this and git-new-workdir given that 
these are permanent branches, not temporary, and I'll want to push and pull 
various clones and share the objects. It looks like the git-new-workdir 
option creates symlinks, whereas the local clone creates hard links, and 
this solution creates a redirect of sorts. 

> 
>   # done!
>   git pull
> 
> Repeat for 4.7.
> 
> If you want to go one step further and track these repos, you could
> look at git-submodule or git-subtree.
>