[Scummvm-devel] Switching from SVN to git, mercurial or bazaar

Jordi Vilalta jvprat at gmail.com
Mon Jun 8 22:35:29 CEST 2009


Hi,

I'm all for a move to DVCS too. I've mainly used Darcs and a bit of
Monotone in the past, but it seems most systems are converging to a
common feature set, so any of them should be fine.

2009/6/8 Kostas Nakos:
> Filippos Karapetis wrote:
>> Well, git is still problematic under Windows (and probably under exotic
>> platforms such as AmigaOS). So, although it does have many strengths,
>> the focus it has on *nix platforms is a bit minus, imho. Plus, Mercurial
>> does have the aforementioned ability, if I'm not mistaken.

For AmigaOS (as an example "exotic" platform), I've had a look at
os4depot.net which looks like a repository for ported software and
there isn't any DVCS I know, just CVS and Subversion. For cases like
Hubert, someone could work on a read-only svn automatically
synchronized with the main repo by using Tailor
(http://progetti.arstecnica.it/tailor), for example.

Other than that, the recent mail from Pierre-Yves about hg-git looks
very promising. It would solve the portability issue of git, allowing
people to use a portable client on platforms where the original client
isn't supported, or even when they feel more confortable with Hg's
nomenclature.

>> In the end of the day, branching doesn't happen very often in ScummVM
>> (i.e. once every 6 months for releases and once every year for GSoC), so
>> that's probably not the killer feature that will urge us move on to git...

I'd say this is one of the killer features ;)

> No, that's a svn/cvs distorted point of view for branch/merge. The
> meaning it takes in git is that one single trivial feature can be made
> into a branch which then can be merged extremely easy.

Once you modify your working copy in SVN/CVS, you're diverging
(branching) from the server contents. The difference is that SVN/CVS
just let you keep 1 "change" before commiting, while DVCSs let you
keep as much as you want, as well as diverging from your own local
branches, or sharing your work with someone else to easily get help.

> To do something
> like that with cvs/svn one has to create a branch in a public repo
> directory then merge it later (good luck with that) and probably delete
> it later on if all developers do stuff like that. So what's good here is
> that you can start working on super-cool feature X in a branch, then
> stop working for Y weeks on it, create other branches, fix stuff etc,
> and then go back to X. All that with only local repository operations.
> That's it; you can keep a feature on the backburner for a long time
> without having to do multiple checkouts while you work on other stuff.

(It's embarrasing but...) It fits perfectly on my way of working,
having rushes of motivation, which make me start trying/working on
several things, and then stopping them for weeks/months :S With SVN I
need several working copies, one for each separated change.

Furthermore, changing to a DVCS would allow changing the team workflow
(I think this issue was raised a few months ago). For example:
- Letting one or several people being responsible for each module
(common code, each engine, port, etc.) and changes done to those parts
of the code just would go through the main repository after their
review (less broken commits go through without being reviewed, less
regressions)
- Having fixes and feature branches would make it trivial to backport
fixes to older releases, and we'd just merge features once they're
finished instead of committing work in progress and releasing
"whatever we have currently on the server" (like partial support for
newer games, or completely unsupported engines) or being forced to
finish features for a near release (higher quality).

Regards.




More information about the Scummvm-devel mailing list