[Scummvm-devel] Subversion is here!

Marcus Comstedt marcus at mc.pp.se
Sat Jan 14 11:43:02 CET 2006

"Pawel Kolodziejski" <pablo at omega.xtr.net.pl> writes:

>> 3) Regarding "merging" the history of files that we manually
>> "renamed" in CVS (like scummvm.cpp -> scumm.cpp; or the whole scummvm-
>> old -> scummvm transition): Anybody besides Eugene and me got an
>> opinion on this? Just to repeat it: Mine is that it would be very
>> nice to have, but that I personally so rarely need it that (again,
>> for me personally) it's of a very low priority and should only be
>> done if it's possible with reasonable effort.
> I'm not sure how such merge trees would looks like. That was
> reorganisation  of tree, how files from diffrent places are linked ? Does
> that mean it could be like current scumm/scumm.cpp to scummvm.cpp from old
> tree ?

Well, what happened when scummvm.cpp was renamed to scumm.cpp was that
the file scummvm.cpp was removed (= moved to Attic) and a new file
called scumm.cpp was created.  This is because CVS does not support
renames.  So the file scummvm.cpp and scumm.cpp are not linked in any
way in CVS; to see the changelog before the name change you have to
"cvs log scummvm.cpp", and to see changes after the name change you
have to "cvs log scumm.cpp".

In subversion, it is possible for a version controlled entity to
change its name.  So if we had been using subversion as the time when
the file was renamed, we could have used "svn mv scummvm.cpp
scumm.cpp", and the file known as scumm.cpp in later revisions would
actually be the same entry as the one known as scummvm.cpp in previous
revisions.  So with an up to date working copy, "svn log scumm.cpp"
would show you not only the changes after the name change, but also
those before the name change, as well as the actual name change
itself.  Diffs between a version before the name change and a version
after the name change would also work.

Unfortunately, the cvs2svn conversion script will not know that the
removal of scummvm.cpp and the addition of scumm.cpp to the CVS
repository was intended as a rename, and so it will create two
separate nodes, just like it was in CVS.  Meaning that log and diff on
this file will work no better than they did in CVS.

It _is_ possible to fix, because what the cvs2svn tool actually
generates is a dump file that could be edited by hand before imported
into subversion (at least it did when I used it the last time).  Thus,
the link between the names can be established by someone who knows
exactly what he is doing.  It's not to be attempted by the faint of
heart though.

  // Marcus

More information about the Scummvm-devel mailing list