Subject: Re: Git and cvsimport

From: Michael J Gruber <[email-masked]>
Date: Tue, 27 Apr 2010 09:37:52 +0200

Marin Atanasov venit, vidit, dixit 26.04.2010 16:27:
> Hello,
> 
> I need to import an existing CVS repo to Git. Using git-cvsimport
> works well for me when importing from the CVS server itself, but I
> need to do something different.
> 
> Here's a little info about what I'm doing.
> 
> $ pwd
> /home/<user>/test
> 
> $ git --version
> git version 1.5.6.5
> 
> $ git cvsimport -v -d :pserver:<user>@<server>:/var/
> cvsroot -C test.git test-repo
> Initialized empty Git repository in /home/<user>/test/test.git/.git/
> Running cvsps...
> connect error: Network is unreachable
> cvs rlog: Logging test-repo
> Fetching file1   v 1.1
> New file1: 14 bytes
> Fetching file2   v 1.1
> New file2: 14 bytes
> Fetching file3   v 1.1
> New file3: 14 bytes
> Tree ID bf675ce25c8ca3fd1f4a120ea933510c90ccda16
> Parent ID (empty)
> Committed patch 1 (origin +0000 2010-04-26 09:40:58)
> Commit ID 377641eae81975e214a579da9e6c0c5afd819b17
> Created tag 'SOMETAG' on 'origin'
> Fetching file1   v 1.2
> Update file1: 47 bytes
> Fetching file3   v 1.2
> Update file3: 47 bytes
> Tree ID 10ab70cdcc53bb94684d09e60817bb62cb8c3d98
> Parent ID 377641eae81975e214a579da9e6c0c5afd819b17
> Committed patch 2 (origin +0000 2010-04-26 09:44:22)
> Commit ID fea2a99c906e57df5c4735ba3f9627cbb8fba295
> DONE; creating master branch
> 
> The above commands works fine, when I directly get the files from the
> CVS server, but I want to do the following.
> 
>  - checkout files from CVS, which are already tagged with certain
> names to a local folder
>  - then import those files to Git with git-cvsimport
>  - fetch those imports later by a shared bare repo into different
> branches, so at the end each branch will contain the files with the
> certain tag.
> 
> So, If i do the following, then git-cvsimport fails:
> 
> $ pwd
> /home/<user>/test
> 
> $ cvs -d :pserver:<user>@<server>:/var/cvsroot co -r SOMETAG test-repo
> cvs checkout: Updating test-repo
> U test-repo/file1
> U test-repo/file2
> U test-repo/file3
> 
> $ git cvsimport -v -d /home/<user>/test -C test.git test-repo
> Expected Valid-requests from server, but got: E Cannot access
> /home/<user>/test/CVSROOT
> 
> Can you give me some hints how to do this? Seems that I can import CVS
> repos from remote server, but cannot do this from a local folder..

... because a folder is not a server, and a cvs checkout is not a cvs repo.

It's not completely clear to me what you want and why, but the simplest
way seems to be to checkout each cvs tag using cvs, and (add &) commit
the result to the git branch of your choice using git. You don't seem to
want to convert the cvs repo, so don't use git cvs-import.

But, really, I don't know what you want - history-less git branches from
cvs tags?

Michael