[Kde-scm-interest] Braindump: fixups

Thiago Macieira thiago at kde.org
Sat Jul 19 15:43:31 CEST 2008


Oswald Buddenhagen wrote:
>On Fri, Jul 18, 2008 at 11:07:15PM -0300, Thiago Macieira wrote:
>>  -> must not let this tool execute on the CVS branches imported since
>>  cvs2svn did a lousy job.
>
>i'm aware of one actual breakage (which i would try to fix retroactively
>if i get some time allocated for that). or do you see some more
>fundamental problem?

The symptom is that the old branches have a lot fewer files than the 
corresponding trunk at the time. I don't know if it's cvs2svn's fault or 
if we failed at tagging/branching correctly with CVS back when.

That's the main problem.

There's a smaller one which is that the dates and SVN revisions are 
completely out of whack. The KDE 2.0, 2.1 and 2.2 branches are spaced 
less than a month apart or something.

Those are the user-visible problems. For those reasons, the old 
branches/tags are completely useless (especially 1.0 and 1.1) when 
imported into Git. I could simply drop them and save us the problem.

The problem I was alluding to in the tool is the way that cvs2svn did the 
branching. Today, when we say "branch" in svn (which is what I meant 
as "proper branching") is to do:

	svn cp .....trunk/KDE/kdelibs  ....branches/KDE/4.1/kdelibs
or even:
	svn cp .....trunk/KDE ....branches/KDE/4.1

However, CVS didn't track directories, so cvs2svn only preserves the files 
correctly. And it tries to be correct up to each individual CVS file's 
revision. So the branching it did is equivalent to:

	svn mkdir ....branches/KDE/2.0
	svn cp -r XYZ .....trunk/kdelibs ....branches/KDE/2.0/kdelibs
	svn cp -r 
XYW .....trunk/kdelibs/kdecore ....branches/KDE/2.0/kdelibs/kdecore
	svn cp -r XYT ....kdecore/kdeversion.h ....kdecore/kdeversion.h

This means that the tool sees those branchings as a lot of 
individual "copy with history" in the same commit, which is completely 
unrepresentable in Git (which is irrelevant, since it is supposed to 
represent one state in history, despite what cvs2svn did).

It might be possible to fix history for the old CVS tags later on by 
re-doing the job. (Extract the tagged sources from CVS again, find the 
proper Git commit in master given the tagging date and then re-create the 
branch representing the tag)

-- 
  Thiago Macieira  -  thiago (AT) macieira.info - thiago (AT) kde.org
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/kde-scm-interest/attachments/20080719/814668a6/attachment.pgp 


More information about the Kde-scm-interest mailing list