[Bug 3678] New: CVS conversion doesn't properly parse CVSROOT

bugzilla-daemon at bz.selenic.com bugzilla-daemon at bz.selenic.com
Tue Oct 23 16:54:03 CDT 2012


http://bz.selenic.com/show_bug.cgi?id=3678

          Priority: normal
            Bug ID: 3678
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: CVS conversion doesn't properly parse CVSROOT
          Severity: bug
    Classification: Unclassified
                OS: All
          Reporter: dnschnur at gmail.com
          Hardware: All
            Status: UNCONFIRMED
           Version: 2.2.3
         Component: convert
           Product: Mercurial

The comments for /convert/cvsps.py:getrepopath correctly note that:

    # According to CVS manual, CVS paths are expressed like:
    # [:method:][[user][:password]@]hostname[:[port]]/path/to/repository

But the code used to parse paths looks like this:

    parts = cvspath.split(":")
    ...
    if len(parts[-2]) > 1:
       return parts[-1].lstrip('0123456789')

Now consider a CVSROOT like this:

    :pserver:myuser at server/path/to/repository

This is a valid (and common) format, and the function should return
/path/to/repository.  But as written it instead returns
myuser at server/path/to/repository.

This mistake gives 'prefix' the wrong value, which means that cvsps.py fails to
strip the prefix from filenames, which eventually results in a 'module not
found' error when the conversion code tries to check out something with a bogus
name.

So the bug is that the function incorrectly requires that paths contain a colon
between the hostname and path portions.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list