<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>CommaVee - Latest Comments in Converting a CVS repository to SVN</title><link>http://commavee.disqus.com/</link><description></description><language>en</language><lastBuildDate>Tue, 05 Feb 2008 18:32:40 -0000</lastBuildDate><item><title>Re: Converting a CVS repository to SVN</title><link>http://commavee.com/2007/01/31/converting-a-cvs-repository-to-svn/#comment-4816741</link><description>Hey Anjana,&lt;br&gt;&lt;br&gt;If that's the entire contents of .keepme,v file that is generating the error, then it is indeed corrupt.&lt;br&gt;&lt;br&gt;Immediately following the lines&lt;br&gt;&lt;br&gt;&lt;code&gt;&lt;br&gt;desc&lt;br&gt;@@&lt;br&gt;&lt;/code&gt;&lt;br&gt;&lt;br&gt;should be the contents of at least one revision to the file; it is entirely legal to have only one revision.  For example, the entire contents of an unmodified file named verifymsg,v , which is present in the CVSROOT directory of most repositories, looks like this:&lt;br&gt;&lt;br&gt;&lt;code&gt;&lt;br&gt;head     1.1;&lt;br&gt;access   ;&lt;br&gt;symbols  ;&lt;br&gt;locks    ; strict;&lt;br&gt;comment  @# @;&lt;br&gt;&lt;br&gt;&lt;br&gt;1.1&lt;br&gt;date     2001.10.11.14.14.32;  author somebody;  state Exp;&lt;br&gt;branches;&lt;br&gt;next     ;&lt;br&gt;&lt;br&gt;desc&lt;br&gt;@@&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;1.1&lt;br&gt;log&lt;br&gt;@initial checkin@&lt;br&gt;text&lt;br&gt;@# The "verifymsg" file is used to allow verification of logging&lt;br&gt;# information.  It works best when a template (as specified in the&lt;br&gt;# rcsinfo file) is provided for the logging procedure.  Given a&lt;br&gt;# template with locations for, a bug-id number, a list of people who&lt;br&gt;# reviewed the code before it can be checked in, and an external&lt;br&gt;# process to catalog the differences that were code reviewed, the&lt;br&gt;# following test can be applied to the code:&lt;br&gt;#&lt;br&gt;#   Making sure that the entered bug-id number is correct.&lt;br&gt;#   Validating that the code that was reviewed is indeed the code being&lt;br&gt;#       checked in (using the bug-id number or a seperate review&lt;br&gt;#       number to identify this particular code set.).&lt;br&gt;#&lt;br&gt;# If any of the above test failed, then the commit would be aborted.&lt;br&gt;#&lt;br&gt;# Actions such as mailing a copy of the report to each reviewer are&lt;br&gt;# better handled by an entry in the loginfo file.&lt;br&gt;#&lt;br&gt;# One thing that should be noted is the the ALL keyword is not&lt;br&gt;# supported.  There can be only one entry that matches a given&lt;br&gt;# repository.&lt;br&gt;@&lt;br&gt;&lt;/code&gt;&lt;br&gt;&lt;br&gt;Note how this differs from your file.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jbminn</dc:creator><pubDate>Tue, 05 Feb 2008 18:32:40 -0000</pubDate></item><item><title>Re: Converting a CVS repository to SVN</title><link>http://commavee.com/2007/01/31/converting-a-cvs-repository-to-svn/#comment-4816740</link><description>I was doing cvs2svn conversion and came across the error "Error summary:&lt;br&gt;ERROR: '/Development/Inc/Attic/.keepme,v' is not a&lt;br&gt;valid ,v file&lt;br&gt;Exited due to fatal error(s).". &lt;br&gt;I am attaching the file here &lt;br&gt;head     ;&lt;br&gt;access   ;&lt;br&gt;symbols  ;&lt;br&gt;locks    ; strict;&lt;br&gt;comment  @# @;&lt;br&gt;&lt;br&gt;&lt;br&gt;desc&lt;br&gt;@@&lt;br&gt;&lt;br&gt;Please let me know what could be wrong in this file. Is the file corrupted? I would like to specify here that the corresponding file is not very deep in the reporitory. Please help.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anjana Sen</dc:creator><pubDate>Sat, 02 Feb 2008 07:14:35 -0000</pubDate></item><item><title>Re: Converting a CVS repository to SVN</title><link>http://commavee.com/2007/01/31/converting-a-cvs-repository-to-svn/#comment-4816737</link><description>Your comments got me thinking about a resumable pass1.  It wouldn't be terribly hard to implement.  (No promises, though :-) )&lt;br&gt;&lt;br&gt;Regarding "depth" problems: I think a far more likely explanation is that a "deep" repository is likely to be an old one that has accumulated repository corruption over the years.  But consider submitting your unprocessable *,v files to the user mailing list if you think they are not corrupt.&lt;br&gt;&lt;br&gt;Granted, it would be nice if we could provide a more specific error message in the case of a corrupt *,v file.  I don't think that the parser that we use provides more information, but I'll double-check.&lt;br&gt;&lt;br&gt;For further discussion, the users@cvs2svn mailing list would be more appropriate so that other members of the cvs2svn community can participate.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael Haggerty</dc:creator><pubDate>Sat, 03 Feb 2007 23:41:20 -0000</pubDate></item><item><title>Re: Converting a CVS repository to SVN</title><link>http://commavee.com/2007/01/31/converting-a-cvs-repository-to-svn/#comment-4816739</link><description>Thanks for the comments, Michael.&lt;br&gt;&lt;br&gt;I am very interested in being able to restart Pass1 - is this feasible?   For very large repositories (i.e. 15+Gb), a fatal error deep into the conversion is a huge time-waster if the process must be completely restarted.&lt;br&gt;&lt;br&gt;WRT issues converting large &amp; complex repositories, my statement is based on anecdotal evidence &amp; experience converting 15 different CVS repositories with cvs2svn.py.  Of those, 13 have converted properly and error-free, but were smallish and non-complex.  The other two have exhibited both the failures I have noted in my posting above, as well as what I am referring to as &lt;em&gt;...trouble with deep branch structures&lt;/em&gt;.&lt;br&gt;&lt;br&gt;That particular issue presented itself on a very large repository in a module that had numerous branch and release tags, both across the entire module and on single files.  The error that was presented was&lt;br&gt;&lt;blockquote&gt;&lt;strong&gt;    ERROR: $CVSROOT/foo/Attic/bar.java,v is not a valid ,v file&lt;br&gt;Exited due to fatal error(s).&lt;/strong&gt;&lt;/blockquote&gt;&lt;br&gt;This was duplicated twice (two subsequent executions of the conversion) against a few files whose only noticeable difference from other ,v files was the depth of the symbol list.  Once I moved those files out of the CVS repository, the conversion moved past them.  This makes me conclude that this issue is related to the depth of the symbol list and is reproducible.&lt;br&gt;&lt;br&gt;This error case and the one involving the ^M at the end of a symbol name are what have prompted me to characterize the error flagging &amp; reporting as poor with respect to use on large, complex repositories.  It took multiple executions of very large conversions to finally determine the root cause of these issues; had the error reporting been more meaningful, the issues with the ,v files could have been resolved after the first report.&lt;br&gt;&lt;br&gt;Thanks for the update about the &lt;code&gt;--retain-conflicting-attic-files&lt;/code&gt; option; I will grab the version from SVN next time and try it.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jbminn</dc:creator><pubDate>Sat, 03 Feb 2007 13:07:59 -0000</pubDate></item><item><title>Re: Converting a CVS repository to SVN</title><link>http://commavee.com/2007/01/31/converting-a-cvs-repository-to-svn/#comment-4816738</link><description>I am currently the main developer/maintainer of cvs2svn.  I read your article with interest, and would like to discuss some of the points that you made.&lt;br&gt;&lt;br&gt;I do not know of any problems in cvs2svn that are caused by deep repositories or repositories with lots of branches.  If you have found some, please let us know.&lt;br&gt;&lt;br&gt;You claim that cvs2svn cannot be restarted.  This is partly correct.  The individual passes of cvs2svn are self-contained and can be re-run.  Thus if there is a problem in pass4, you don't have to restart the conversion at pass1.  This can be a big benefit, particularly when dealing with tag/branch names that were used inconsistently.&lt;br&gt;&lt;br&gt;However, you are correct that pass1, in which the data are parsed out of CVS, cannot be restarted if there is an error.&lt;br&gt;&lt;br&gt;We try to give reasonable error messages (and sometimes workarounds) for the kinds of repository corruption that have been reported to us&lt;br&gt;frequently.  If you have found other common failure modes, please report them to our mailing list and we will look at them.&lt;br&gt;&lt;br&gt;Regarding symbol names with appended carriage returns:&lt;br&gt;&lt;br&gt;I've never seen this problem; thanks for pointing it out.  If you would send an email to the users mailing list including a snippet of a CVS repository that shows this problem, I'd be happy to look at it.  If you have any suggestions for how you think cvs2svn should work around this problem, please let us know.&lt;br&gt;&lt;br&gt;Regarding the --retain-conflicting-attic-files option:&lt;br&gt;&lt;br&gt;This option has been added to the trunk version of cvs2svn (and works, as far as I know), and that is why it is included in the online documentation.  But the latest official release, 1.5.1, does not yet include this feature.  I understand that this discrepancy can lead to confusion.</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael Haggerty</dc:creator><pubDate>Sat, 03 Feb 2007 12:15:54 -0000</pubDate></item></channel></rss>