Re: Question on multi-level git repository heiarchy.
- From
- Ben Greear <greearb@candelatech.com>
- Date
- Nov 16, 2006, 00:43 UTC
- Message-ID
- <455BB418.80402@candelatech.com>
- In-Reply-To
- <20061027052517.GB29057@spearce.org>
Shawn Pearce wrote:
Show 43 quoted lines
> Ben Greear <greearb@candelatech.com> wrote: >> I want to create an intermediate level..something like: >> >> kernel.org git tree >> | >> my git master tree >> / \ >> work-station-1 work-station-2 .... > >> I then did a git checkout -f master on the >> pub server and did a pull from the upstream kernel. >> This seemed to work fine. > > Ah, what you really want here is to make your "my git master tree" > a bare repostiory and use fetch instead of pull. This way you > don't need to maintain a working directory of files associated > with that repository. So assuming you have "mygitmastertree" > as the directory do: > > mv mygitmastertree/.git mygitmastertree.git > rm -rf mygitmastertree > > and update your workstation .git/remotes/origin files such > that the URL line reads ".../mygitmastertree.git" rather than > ".../mygitmastertree/.git". > > Then to update "mygitmastertree" with recent changes you can use > git fetch rather than git pull: > > git --git-dir mygitmastertree.git fetch > >> Then, on the work-station, I did a git checkout -f master, and also did >> a pull. >> In this case, it seems that it is trying to merge with changes in the >> lf_v2.6.18 branch >> instead of the the main 'master' tree (see below). > > When you use "git pull" with no additional arguments the first > branch listed in a Pull: line of .git/remotes/origin will be the > branch merged into the current branch. I don't know what that > branch is listed as in your workstation tree but from what you > described it sounds like it may be that lf_v2.6.18 branch, which > is why its trying to merge it.
I have been using a variation of this with some success. (I didn't rename the .git directory on the master tree, but the directory only contains a .git directory so I assume that I'm using a bare tree....)
I have been able to do 'git pull origin' and 'git push origin master' to sync and commit my lf_v2.6.18 branch from my work-station repositories (per this page's instructions: http://www.kernel.org/pub/software/scm/git/docs/cvs-migration.html
Now, I would like to fetch down all of the changes from kernel.org to my master tree and then update my work-station branches. On the master, I ran 'git fetch'. It took a while and seemed to do the right thing. There is still nothing other than .git in the directory, and subsequent 'git fetch' calls return quickly w/out doing anything.
However, I cannot find an incantation on the work-station machines to pull down the changes and sync up with kernel.org.
I did a 'git fetch' on the work-station, but gitk still does not show anything new in 'master' or 'lf_v2.6.18
I tried checking out master and running: git pull . master but it said Already up-to-date.
I tried checking out the master branch on the work-station and doing a 'git pull' there. It got a lot of conflicts from the changes that I had made in the lf_v2.6.18 branch.
I want to have some local branch contain only official kernel patches, and then fork my own branches off to track my individual changes. My assumption was that I could do something like:
git checkout master git pull
and have master updated with (only) the latest tree from kernel.org and have lf_v2.6.18 un-touched.
Any pointers are welcome.
Thanks, Ben
-- Ben Greear <greearb@candelatech.com> Candela Technologies Inc http://www.candelatech.com