[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