You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Stijn Hoop <st...@win.tue.nl> on 2004/02/18 15:09:15 UTC

cvs2svn: another vendor branch problem?

Hi,

I was curious to see how cvs2svn was improved in the last few days (I see that
a lot of work has been done, which is very cool), so to test this I tried to
import part of a large real-world repository: the bind sources from within the
FreeBSD src repo.

While the import completed without warnings, the resulting repository does not
have the same branch information as the CVS repository has; that is, a CVS
checkout of HEAD vs a Subversion checkout of trunk/ does not contain the same
sources. Other branches appear to be correct (at least the few I tried), but
of course the trunk is the most important one for me.

My guess is that it's related to the recent work on issue #1510, cvs2svn: No
support for vendor branches. Since this part of the FreeBSD repository is all
about vendor branches (src/contrib/bind contains vendor imported code that is
referenced by other parts in the source tree).

Indeed, the checked out SVN copy appears to be some revision on the 1.1.1.1.2
branch instead of the latest revision on the 1.1.1 branch (a subtle
difference). This happens with a lot of files in this part of the repository,
but to provide a simple and small example I took the INSTALL,v file from the
repo and just converted that.  The tarball of this test repository along with
the command line I used to convert it (in a .sh script) are available at

http://sandcat.nl/~stijn/miscellaneous/svn-vbp.tar.gz

At 10k this is not a very big download; it is modeled after the repo's in
tools/cvs2svn/test-data.

I'll gladly followup to any issue, or make a new one but the Issue Tracker
page said to mail this list first. Please CC me, I'm not subscribed.

And of course congratulations on Subversion as it is now; I'm definitely
converting my (infinitely simpler) personal repository in the next few days!

--Stijn

-- 
Remember, kids: "Q" is always followed by "U". You can learn more on the
Internet in the Spelling FAQU.
		-- James "Kibo" Parry

Re: cvs2svn: another vendor branch problem?

Posted by kf...@collab.net.
Thanks -- I will take a look at this as soon as can!

-Karl

Stijn Hoop <st...@win.tue.nl> writes:
> On Wed, Feb 18, 2004 at 04:09:15PM +0100, Stijn Hoop wrote:
> > Indeed, the checked out SVN copy appears to be some revision on the 1.1.1.1.2
> > branch instead of the latest revision on the 1.1.1 branch (a subtle
> > difference).
> 
> A little hacking later (with my super-rusty Python skills) produced the
> attached patch. It works, but I don't know if it is correct for all
> repositories.
> 
> Now the only difference between the CVS and Subversion checkouts is the fact
> that given identical 1.1 and 1.1.1.1 revisions, CVS checks out revision 1.1.1.1
> and Subversion checks out revision 1.1. This leads to diffs in $Id$ keyword
> expansion lines in the source files.
> 
> --Stijn
> 
> -- 
> In the force if Yoda's so strong, construct a sentence with words in
> the proper order then why can't he?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: cvs2svn: another vendor branch problem?

Posted by Stijn Hoop <st...@win.tue.nl>.
And to reply to myself again (are you guys getting bored of me yet? :)

On Wed, Feb 18, 2004 at 05:30:10PM +0100, Stijn Hoop wrote:
> Now the only difference between the CVS and Subversion checkouts is
> the fact that given identical 1.1 and 1.1.1.1 revisions, CVS checks out
> revision 1.1.1.1 and Subversion checks out revision 1.1. This
> leads to diffs in $Id$ keyword expansion lines in the source files.

I tried to fix this in the spirit of issue 1474, which is to say it would be
nice if the 'empty' revision could be optimized away. However this is simply
not correct (as I found out while testing some ways to fix this); in CVS, the
file can change between revision 1.1 and revision 1.1.1.1 -- due to exactly
the problem I was trying to solve, keyword expansion.  Witness this from the
(now correctly) converted repository:

%%

[stijn@firsa] <~/src/svntest/tr/trunk> svn diff -r2 DNSSEC
Index: DNSSEC
===================================================================
--- DNSSEC      (revision 2)
+++ DNSSEC      (working copy)
@@ -1,4 +1,4 @@
-$Id: DNSSEC,v 1.1 1999/11/30 02:41:37 peter Exp $
+$Id: DNSSEC,v 1.1.1.1 1999/11/30 02:41:37 peter Exp $

 DNSSEC Notes:

[stijn@firsa] <~/src/svntest/tr/trunk> svn log -r3 DNSSEC
------------------------------------------------------------------------
r3 | cvs2svn | 1999-11-30 03:41:37 +0100 (Tue, 30 Nov 1999) | 3 lines

This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches.

------------------------------------------------------------------------
[stijn@firsa] <~/src/svntest/tr/trunk>

%%

I ripped out the part in Commit.commit that special cased the 1.1.1.1
revision, and now I have an absolutely identical trunk checkout between CVS
and Subversion. Attached is the patch to cvs2svn.py that I used (it contains
the previous patch for the branch from a vendor branch issue as well).

Hope this helps someone,

--Stijn

-- 
Remember, kids: "Q" is always followed by "U". You can learn more on the
Internet in the Spelling FAQU.
		-- James "Kibo" Parry

Re: cvs2svn: another vendor branch problem?

Posted by Stijn Hoop <st...@win.tue.nl>.
On Wed, Feb 18, 2004 at 04:09:15PM +0100, Stijn Hoop wrote:
> Indeed, the checked out SVN copy appears to be some revision on the 1.1.1.1.2
> branch instead of the latest revision on the 1.1.1 branch (a subtle
> difference).

A little hacking later (with my super-rusty Python skills) produced the
attached patch. It works, but I don't know if it is correct for all
repositories.

Now the only difference between the CVS and Subversion checkouts is the fact
that given identical 1.1 and 1.1.1.1 revisions, CVS checks out revision 1.1.1.1
and Subversion checks out revision 1.1. This leads to diffs in $Id$ keyword
expansion lines in the source files.

--Stijn

-- 
In the force if Yoda's so strong, construct a sentence with words in
the proper order then why can't he?