From: Ben Greear Date: Thu, 16 Nov 2006 00:43:04 GMT Subject: Re: Question on multi-level git repository heiarchy. Message-ID: <455BB418.80402@candelatech.com> In-Reply-To: <20061027052517.GB29057@spearce.org> Shawn Pearce wrote: > Ben Greear 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 Candela Technologies Inc http://www.candelatech.com