问题
I'm trying to convert a CVS repository to mercurial but can't get it to work.
I start with a clean checkout:
cvs -d :sspi;username=xxx;hostname=yyy.local:/cvsrepos checkout repo
Which works fine
I then do:
hg convert .
But it fails with:
assuming destination .-hg
initializing destination .-hg repository
connecting to :sspi;username=xxx;hostname=yyy.local:/cvsrepos
abort: unexpected response from CVS server (expected "Valid-requests", but got 'E cvs [server aborted]: Root :sspi;username=xxx;hostname=yyy.local:/cvsrepos must be an absolute pathname\n')
I'm running cvsnt on windows 7
Edit:
Investigated this a bit more and it seems like mercurial starts a local server cvs server
and then communicates with that instance instead of the remote server.
I base this on the following observations:
- I created a cvs.bat file that sends the command line arguments to a file. The file shows the argument "server".
- process monitor shows that hg.exe tries to open the file
C:\cvstest\:sspi;username=xxx;hostname=yyy.local:\cvsrepos
which of course fails.
Can it be that hg does not understand the sspi connection string?
Edit 2:
Not a solution but I found a workaround: Copy the complete remote repository to my machine and:
cvs -d :local:\localcopyofrepo checkout repo
hg convert repo
Everything worked fine
回答1:
Looks like the error message is telling you to use an absolute pathname to the repository, try using
hg convert <full_path_including_drive>
rather than the .
path on a checked out sandbox of your CVS repository. You could also try specifying the repository type in the convert
command by adding -s cvs
to the command, the result would look something like this:
hg convert -s cvs C:\sandbox\cvsrepos
回答2:
It looks like you are using ConvertExtension. Can you try hg convert
from the parent folder and specify the folder name, instead of .
and see if it works?
来源:https://stackoverflow.com/questions/4131690/convert-cvs-to-mercurial