[Scummvm-devel] Switching ScummVM repository to Git

Eugene Sandulenko sev at scummvm.org
Tue Jun 15 21:18:41 CEST 2010


Hi guys again,

Now I am back and I got some results.

I love git more and more. I could shuffle my commits, review the commit
log messages, split some of them, perform last minute changes, and all
that in a convenient way. Not to mention how FAST everything was.

To reproduce the results I got, do following:

  mkdir ~/scummvm-svn
  rsync -av scummvm.svn.sourceforge.net::svn/scummvm/* ~/scummvm-svn

This will fetch whole ScummVM SVN repository. Please be nice to sf.net,
as it is 800MB download.

  cd ~
  git clone git://gitorious.org/svn2git/svn2git.git
  cd svn2git
  qmake
  make

This will create svn2git tool which I used (there are at least 3 of
them, but other 2 are dumber). It requires QT4. Sorry. I would write it
in Perl or Pythong and forget about 200MB downloads.

  ./svn-all-fast-export --identity-map authors.log.sort --rules \
    scummvm.rules --add-metadata ~/scummvm-svn

scummvm.rules and authors.log.sort files are attached.

This will take awhile (50 minutes on Ubuntu running on Windows 7 laptop
with 2GHz Core Duo processor.

As a result you will get 4 repositories:

  legacy -- Contains all things considered to be redundant, that is
    docs, engine-data, residual, scummex, vendor. Master is engine-data
    root

  scummvm -- All branches, tags. Master is trunk. Additionally
    vendor/fonts contents put there as fonts branch, since we need to
    move it to gui/ soon

  tools -- Tools with all branches and tags

  websites -- all websites as branches. master is web/trunk

You may see full list of branches in attached git-branches file.

No git tags will be there, those will be manually added after the
import.

After `git gc --aggressive` scummvm repository is under 70MB (yay),
websites is 130MB (graphics), and total whole thing is 220MB. Not bad,
not bad.


So now, let's discuss how we can proceed with the move.

I am ready to perform the switch anytime. Current SVN repository will
be put into read-only mode and will stay for reference.


As you know, Git gives /much/ more flexibility to development
strategies. Most natural one which will differ less from our current
approach (and thus will have lesser learning curve) is described at
'Long-Running Branches' subheading in Pro-Git book
(http://progit.org/book/ch3-4.html). This will basically represent what
we have now with trunk, branches and tags.

Of course, there will be pre-release branches which will deviate from
master.

Also it will be Centralized workflow described at
(http://progit.org/book/ch5-1.html), where each developer will have
permissions to commit to our main repository. No dictator-leutenant,
we're not that big.

Now let's discuss. Soon, after analysis of your reaction and measure of
involvement, I will propose the schedule of the switch over.

Also please review authors.log.sort, and check that I did not misspell
somebody's name.


Eugene
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: authors.log.sort
URL: <http://lists.scummvm.org/pipermail/scummvm-devel/attachments/20100615/e778b5d1/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: git-branches
URL: <http://lists.scummvm.org/pipermail/scummvm-devel/attachments/20100615/e778b5d1/attachment-0001.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: scummvm.rules
URL: <http://lists.scummvm.org/pipermail/scummvm-devel/attachments/20100615/e778b5d1/attachment-0002.ksh>


More information about the Scummvm-devel mailing list