You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Lev Serebryakov <le...@serebryakov.spb.ru> on 2003/11/13 12:07:11 UTC

Re[6]: cvs2svn.pl 0.50 released: first public release

Hello Mats,

Thursday, November 13, 2003, 2:46:37 PM, you wrote:

>> file1.c:
MN> Guess you mean file2.c.
  Yes, my fault.

>>    REL1:1.2
>>    REL2:1.4
>>    BRANCH1:1.5.0.2
>> 
>> If script sees only `file1.c' it "thinks":
>> 
>>  (1) REL1 is tag on TRUNK, we copy TRUNK to create it
>>  (2) REL2 is tag on TRUNK OR BRANCH1 before file was changed on this
>>      branch. WHAT SHOULD WE COPY!? BRANCH1 and TRUNK contains SAME
>>      file in this moment of time!
MN> I'd say REL2 is a tag on TRUNK, since its version only has two
MN> components. A tag on BRANCH1 would have a version number 1.3.2.x.
  NOT, NOT AND NOT. When you set tag on file, which is checked out
  from branch, but was not changed on this branch, tag will be set to
  branch point revision. Tag was set ON BRANCH (for all files), but on
  THIS ONE FILE (not changed on branch) it will be on TRUNK revision,.

MN> If I converted this repository (consisting of only file1.c) to svn, I'd
MN> expect to see something like this:
MN>         rev 1: A /trunk/file1.c (1.1)
MN>         rev 2: M /trunk/file1.c (1.2)
MN>         rev 3: M /trunk/file1.c (1.3)
MN>         rev 4: A /branches/BRANCH1 by copying /trunk@3
MN>         rev 5: A /tags/REL1        by copying /trunk@1
  Why not copy /branches/BRANCH1@4 here? They are equal and consist of
same revision of this file! Why trunk is much important, than
branch?! May be this tag was created on branch, but before first
change of this file on this branch (it is possible).

  Result will be the not same, because, when you copy from branch, you
copy log message about branch creation too. It could be important. If
it is not important for you, read about `-w' option and
`DiffSymParents' event.

  In some cases, `-sh' option could solve such ambiguous situations,
but only in case when tags on branches starts with branch names... It
is simple heuristic, but it works for FreeBSD repository, for example.

MN> For a repository with both files, it might read:
MN>         rev 1: A /trunk/file1.c (1.1)
MN>                A /trunk/file2.c (1.1)
MN>         rev 2: M /trunk/file2.c (1.2)
MN>         rev 3: M /trunk/file1.c (1.2)
MN>                M /trunk/file2.c (1.3)
MN>         rev 4: M /trunk/file1.c (1.3)
MN>                M /trunk/file2.c (1.4)
MN>         rev 5: M /trunk/file2.c (1.5)
MN>         rev 6: A /branches/BRANCH1 by copying /trunk@5
MN>         rev 7: A /tags/REL1        by copying /trunk@2
MN> Look for a copy source with revisions file1(1.3) file2(1.4):
MN>         rev 8: A /tags/REL2        by copying /trunk@4
  Yes, script will do exactly this work in such case.

MN> Lev, it would be really interesting if you could extend this example in
MN> such a way that the choices in the first walkthrough would not be
MN> equivalent. That could maybe help to illustrate your point.
 If script have two equivalent choices (as in eexample with only
 file1.c) it could not choice anything/ because it don't have
 additional information for choice, and I don't want to do RANDOM
 choice. You could help scrpt with `-sp' option or allows random
 choice with `-w DiffSymParent' option.

-- 
Best regards,
 Lev                            mailto:lev@serebryakov.spb.ru


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

Re: Re[6]: cvs2svn.pl 0.50 released: first public release

Posted by kf...@collab.net.
Lev, just wanted to point out something that may be helpful to you:

The cvs2svn.py test suite data contains many pathological cases, drawn
from real-life experience.  It's tools/cvs2svn/test-data/*-cvsrepos/
in the Subversion tree.  Perhaps they can be useful to you in testing
cvs2svn.pl.  (Or maybe you already knew about them?  I wasn't sure,
sorry if this is old news to you :-) ).

Good luck,
-Karl

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

RE: Re[6]: cvs2svn.pl 0.50 released: first public release

Posted by Mats Nilsson <ma...@xware.se>.
Lev Serebryakov wrote:
>  If script have two equivalent choices (as in eexample with only
>  file1.c) it could not choice anything/ because it don't have
>  additional information for choice, and I don't want to do RANDOM
>  choice. You could help scrpt with `-sp' option or allows random
>  choice with `-w DiffSymParent' option.

Well. First you say they are equivalent, but then you don't take the
consequence (and select one of them).

And it wouldn't be random if you always selected the branch closer to
the trunk, or trunk if applicable. 

To me they are equivalent. How we copy stuff while creating the svn
dumpfile is not an inherent attribute of the original repository. What
matters to me is that every line of development and every tag has the
correct intermediate and final states, defined solely and exclusively in
terms of file revisions. That is, not how we have copied stuff around to
get there. 

-w DiffSymParent didn't make a difference on my example (cvs2svn-0.50).
I'll try later with 0.51.

Sorry for the fuzz. It's your show. I'll be quiet now, waiting for some
other peoples' comments.


Thanks.

Mats


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