Re: PATCH: add git to verify-cvs2svn.py ; fix too many warnings issue

Michael Haggerty <[email protected]> Wed, 25 Aug 2010 10:13:27 +0200
Newsgroups gmane.comp.version-control.subversion.cvs2svn.devel
Message-ID <[email protected]>
James Blackburn wrote:
> Attached is a patch to add --git support to verify-cvs2svn.py -- in a
> similar manner to HgRepos.

This is great!  This has been languishing on my todo list forever, so
I'm glad that somebody else got to it.

I must be doing something wrong, but a simple verification of a
conversion of the "test-data/main-cvsrepo" doesn't quite work for me:

    $ ./cvs2git --username=cvs2git \
          --dumpfile=cvs2svn-tmp/dump.out \
          --blobfile=cvs2svn-tmp/blob.out \
          test-data/main-cvsrepos
    $ mkdir cvs2svn-tmp/gitrepo
    $ (cd cvs2svn-tmp/gitrepo &&
          git init &&
          cat ../blob.out ../dump.out | git fast-import)
    $ git reset --hard HEAD
    $ contrib/verify-cvs2svn.py --tmpdir=cvs2svn-tmp --git \
          test-data/main-cvsrepos cvs2svn-tmp/gitrepo
    Verifying trunk
     FAIL: Directory / has extra entries: .git
    Verifying tag T_ALL_INITIAL_FILES
     FAIL: Directory / has extra entries: .git
    Verifying tag T_ALL_INITIAL_FILES_BUT_ONE
     FAIL: Directory / has extra entries: .git
    Verifying tag T_MIXED
     FAIL: Directory / has extra entries: .git
    Verifying tag after
     FAIL: Directory / has extra entries: .git
    Verifying tag vendortag
     FAIL: Directory / has extra entries: .git
    Verifying branch B_FROM_INITIALS
    CMD FAILED: git
--git-dir=cvs2svn-tmp/git-export-branch-B_FROM_INITIALS/.git
--work-tree=cvs2svn-tmp/git-export-branch-B_FROM_INITIALS checkout -q
B_FROM_INITIALS
    Output:
    Branch B_FROM_INITIALS set up to track remote branch B_FROM_INITIALS
from origin.
    Error: git command failed!

I think that at least some of these errors could be avoided if you would
use "git archive" rather than "git clone; git co" to export tags and
branches; i.e., use the equivalent of this command:

GIT_DIR=$PATH/.git git archive --format tar $BRANCH |
    tar -C $dest_dir -x

It should also be faster than cloning the repository for each branch.

The disadvantage is that it relies on the presence of "tar" in the
command path.  To get around that limitation, one could use Python's
"tarfile" module, using something like the last recipe on this page:

http://docs.python.org/release/2.4/lib/tar-examples.html

> It also fixes an issue whereby file mismatches are reproted file_size
> / 8K times.

Cool.  I just committed this part of your patch.

Michael

------------------------------------------------------
http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1667&dsMessageId=2650952

To unsubscribe from this discussion, e-mail: [[email protected]].