Public Git repo: Status update

John Ralls jralls at ceridwen.us
Wed Jan 12 00:38:20 EST 2011


On Jan 11, 2011, at 8:23 PM, Yawar Amin wrote:

> Hi John,
> 
> Trying to understand your suggestion. Questions below:
> 
> On 2011-01-08, at 17:16, John Ralls wrote:
> 
>> […]
>> 
>> Maybe instead you could create a fake-master branch off of master in your git-svn repo and tie fake-master to github's master.
> 
> You mean:
> 
> [git-svn master] git checkout -b fake-master remotes/github/master
> 
> ?
> 
>> Then you can 
>> git svn rebase master
> 
> This is to fetch new revisions from SVN and rebase any local work in master on top of that, right?
> 
>> git checkout fake-master
>> git merge master
>> git pull --rebase github fake-master
> 
> I don’t get this one. The repo up on GitHub is not supposed to see fake-master, right? So why are we pulling fake-master from GitHub?
> 
>> git push github fake-master
> 
> Corollary of the above, why are we pushing fake-master to GitHub?
> 
>> git checkout master
>> git merge fake-master
>> git dcommit
>> 
>> (In a script, of course).
>> That way we can keep our throwaway branches to ourselves, the github repo will look reasonable, and you don't have to do a bunch of hand merging and branch deleting.
> 
> I have to admit I tried out the throwaway branch approach and found it pretty simple, except for the part where the contributor has a dangling reference to the remote branch after the remote branch has been deleted. Oh well. Would like to understand and try your approach as well.
> 

No, you've got it backwards. The idea is that in your local repo (the one that syncs between svn and github) master syncs
with svn trunk and fake-master syncs with github's master. That way, git users can merge their local branches to/from master and rebase then push to github master as usual. All of the merging back-and-forth between snv and github has to happen at the intermediary machine (yours).

git checkout -b fake-master remotes/github/master won't work: the start-point needs to be a commit, not a treeish.
git branch -t fake-master remotes/github/master instead (and I don't think that you need the "remotes/" part, but it won't do any harm) 

But if you're going to start over, then github/master won't exist yet and you'll just 
git branch fake-master  while you have master checked out, then 
git remote add -t fake-master -m github git at github.com:Gnucash/gnucash.git
to point fake-master at master on github.

I'm working from the manpages here, not experience, so one of us should try it out with local repos first... Maybe I can get to it this weekend. I want to get the database version upgrade stuff finished and committed first.

Regards,
John Ralls




More information about the gnucash-devel mailing list