Proposals/feedback for a distributed version control system for cutecash?

Christian Stimming stimming at tuhh.de
Tue Apr 6 04:53:10 EDT 2010


Am Dienstag, 30. März 2010 schrieb Derek Atkins:
> > What would other devs around here choose as distributed VCS for a new
> > project, and why? Do you know of any hosting sites with that VCS that
> > offers continuous tracking of the original SVN branch?
> 
> I must admit that the only "distributed" VCS I've used is SVK, which is
> based around SVN.  It's... okay.  If I were to move to something else
> right now I think I'd move to git.

I've forked timabell's import of gnucash's svn into git on github.com and 
added the missing commits since his last update. Everyone is invited to pull 
from this git repo to see how working with the git side would look like:

  Browse to:   http://github.com/cstim/gnucash-svn
  Clone in git:   git clone git://github.com/cstim/gnucash-svn.git

In particular, downloading everything by "git clone" doesn't take that long, 
hence I don't understand some comments here which mentioned the need for an 
extra download-all-in-one-file requirement. Also, github.com encourages to 
create forks of existing repositories easily (such as this one), so I guess 
this is an easy playground for testing the git access to our code.

For syncing a repo such as this one to SVN updates, currently someone would 
have to manually run "git svn rebase" and "git push"; it was this part that 
could be automated by a cron job.

> I think it's reasonable to think about migrating from SVN to git, but I
> would want us going in with eyes wide open:
> 
> 1) WHY are we changing from SVN to a distributed VCS?

My main reason: To make it easier for new contributors to contribute their 
changes to a public place. With SVN they could send patches or attach them to 
bugzilla, both which tend to be outdated quickly and get forgotten. With git, 
they can either fork the whole repo (like on github.com) and push their 
proposals there, or push to a personal branch in the main repo. In both cases 
git takes care of most of the merging action, so it will be way easier to 
merge their changes back in.

Socially, this means we can get away a bit more from the development model of 
"one true developer group" (those who have SVN write access) and rather move 
into the direction of "some loose collection of contributors, some of which 
contribute regularly, others only occasionally".

Additionally, the normal VCS operations are much faster in git. The speed 
improvement doesn't seem significant at first, but in the long run, having the 
common operations magnitudes faster also changes one's way of working, to the 
better.

> 2) What features does the distributed VCS have that SVN does not (based
>    on how we use SVN)?

- Easier merging from the same branch to another, multiple times.
- No extra write access to some central repo necessary for new contributors
- Easier integration into sub-projects (cutecash) which would just merge the 
main branch's changes regularly

> 3) Is there a viewer we could use (in lieu of trac)?

I don't know. I've moved away from trac and instead look up everything in gitk 
locally (or maybe the git-gui file browser for annotation) because - I 
mentioned this already :-) - it is way faster. github.com has plenty of web 
viewing possibilities, see above. I'm not sure whether you can find everything 
there you were looking for, but I wouldn't miss anything if we continued 
without trac - but that's just my personal workflow.

Regards,

Christian


More information about the gnucash-devel mailing list