cvsps-import plugin on Cygwin

John Arbash Meinel john at
Thu Jan 11 16:13:23 GMT 2007

Hash: SHA1

Alexander Belchenko wrote:
> I try to convert my old CVS repo with new cvsps-import.
> Unfortunately cvsps itself require posix, so I use cygwin.
> I successfully convert a tiny module, and it's OK.

Thanks for giving it a shot. I'm pretty sure it is far from fully
supported, as I semi-intentionally avoided trying to work out what it
would take in order to get cvsps up and running quickly. But I would be
happy to help make it multi-platform.

> But converting more complex module with a lot of branches and tags
> I have permanent error:

To start with, I believe --encoding is not fully hooked into the system.
The only parts that I use it are the log message and the author name.

Filenames are going to be a significant issue because of cygwin limitations.

> $ bzr cvsps-import /cygdrive/d/user/a51/CVS bDisplay bDisplay --encoding=cp1251
> cvsps dump file: bDisplay/staging/bDisplay.dump
> Failed while processing: Patchset(156, HEAD, modul98, 2005/01/14 14:49:31)
> Processed 156 patches (156 new, 0 existing) on 5 branches (4 tags) in 253.3s (0.62 patch/s)
> bzr: ERROR: [Errno 2] No such file or directory: '/home/modul98/bDisplay/bzr/bDisplay/tags/Beta_England **FUNKY**'
> I don't understand error message.
> 'Beta_England' is actually tag that presents in my repo.
> But it try to create directory:
> '/home/modul98/bDisplay/bzr/bDisplay/tags/Beta_England **FUNKY**'
> ???
> Why for it needed **FUNKY**?
> Asteriks is not valid char for filenames on Win32,
> and therefore cygwin also cannot create this funky dir.
> Or I misunderstood something?

^- Most likely you are correct. This is actually 'cvsps' doing it, and
not myself. Specifically when it detects that file versions are
inconsistent, then it creates the **FUNKY** tag.

One instance of this is if time rolls backwards, etc.

There are a couple things we could do. One is to just munge **FUNKY**
into something like @@FUNKY@@ (we might also have to do it for **INVALID**).

> Another tiny question: can cvsps-import use cvs directly
> for checkout when rcs is unavailable? AFAIK cvs2svn
> has the flag to choose between rcs and cvs for checkout.
> Alexander

I never worked out how to get cvs to just give me the contents of a file
on stdout. (something like 'bzr cat'). Someone else had already found
the rcs command:

  co -M -p -r1.1 foo.txt,v

There might be something we could do if we use the cvs :pserver:
protocol, and then we could even just spawn:

  cvs server

And then talk to it to get the file contents.

That is outside the scope of what I was doing, but it is certainly

Part of the benefits of cvsps-import is that it doesn't need to go
through the filesystem, which helps speed (there are a lot fewer read
this, write it, read it again steps, but also 'cvs update' has a
built-in 1s sleep to make sure timestamps are valid)

I'll reply to your other messages as well.

Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla -


More information about the bazaar mailing list