Thread (8 messages) flat view 8 messages, 6 authors, 2016-06-15

Re: git cvsimport branches not consistent with CVS branches

From: Robin Rosenberg <hidden>
Date: 2016-06-15 22:43:20

söndag 08 juli 2007 skrev Brian Downing:
On Sun, Jul 08, 2007 at 10:45:10AM +1000, Gordon Heydon wrote:
quoted
After some investigation I found that git cvsimport was not importing 
branches 100% correctly with CVS.

Git and CVS do branching very differently in that CVS this is done at 
the file level (like everything else) and git does it repository wide.

So if I have a CVS repository with the files a, b and c and I branch b 
with a `cvs tab -b BRANCH test` on the branch test I will just have the 
file b.

If I do a git cvsimport on the test branch there will actually be the 
files a, b and c

What I think needs to happen is that when git cvsimport created the 
branch in the git repository it needs to delete all files from the 
branch that were not branched.
I've been vaguely working on Yet Another CVS Importer (an incremental
one; both git-cvsimport (thanks to cvsps) and tailor take about ten
minutes and a gigabyte of RAM to figure out that nothing has to happen
with my repository.  I think I can do better than that).
Corecode's fromcvs is pretty fast and incremental and AFAIK accurate. I had 
plenty problems with cvsimport, but fromcvs keeps in sync with the CVS repo.
Get  it at http://ww2.fs.ei.tum.de/~corecode/hg/fromcvs/ .

It does not convert regular tags, only branches, however so there is something to 
do for those that want a complete cvs import.
In thinking about this case, I think I've decided that you want an
option on what to do here.  For some repositories you're not going to
care about having extra files with the tag, and would greatly prefer
that to having to create a branch for each and every tag (assuming you
can arrange to have the correct files present otherwise; this isn't
always possible.)

For other cases, you really only want to get the subset of the files
that are tagged.  For this, I think the best arrangement would be to
make your branch, then make a commit that only deletes the files that
are not present in the CVS branch, as you said.  Then immediately make
fromcvs drops the files that do not have the branch tag. It is pretty simple to change
the behaviour ( http://rosenberg.homelinux.net/gitweb/gitweb.cgi?p=FROMCVS.git;a=commitdiff;h=eb1c159bcc0d79eab182da3d7040ac62b52fd297 )
although this should be a switch and not hard coded.

-- robin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help