Subject: Re: [PATCH] cvsimport: ignore CVSPS_NO_BRANCH and impossible branches

From: Salikh Zakirov <[email-masked]>
Date: Mon, 19 Jun 2006 20:20:35 +0400

Junio C Hamano wrote:
> Martin Langhoff <[email-masked]> writes:
> 
>> cvsps output often contains references to CVSPS_NO_BRANCH, commits that it
>> could not trace to a branch. Ignore that branch.
>>
>> Additionally, cvsps will sometimes draw circular relationships between
>> branches -- where two branches are recorded as opening from the other.
>> In those cases, and where the ancestor branch hasn't been seen, ignore
>> it.
> 
> This sounds more like an workaround than a real fix to me,
> although I'd apply it for now.  I see Yann is collecting cvsps
> patches but maybe there will be a real fix soonish?

#CVSPS_NO_BRANCH is the identifier that CVSPS gives to the unnamed branches.
Unnamed branches appear when the branch tag is removed or moved forcefully.
The following short script reproduces the CVS repository with unnamed branches.

In my opinion, ignoring #CVSPS_NO_BRANCH in git-cvsimport is the most sensible
thing to do, because the branch was abandoned in the CVS in the first place. 
I had to preprocess cvsps output to cut out CVSPS_NO_BRANCH commits anyway.

I vote for including the Martin's patch.

Creating CVS repository with unnamed branch
--8<--
export CVSROOT=$PWD/cvsroot
cvs init
cvs checkout .
mkdir a
cvs add a
cd a
vim a.txt
cvs add a.txt
cvs commit -m "added a.txt" a.txt
cvs tag -b br1
cvs update -r br1
echo "br1 update" >> a.txt
cvs commit -m "br1 update" a.txt
cvs update -A
echo "HEAD update" >> a.txt
cvs commit -m "HEAD update" a.txt
cvs tag -d br1
cvs tag -b br1
cvs tag -d -B br1
cvs tag -b br1
cvs update -r br1
echo "branch update, once more" >> a.txt
cvs commit -m "2nd branch update" a.txt
------

and corresponding CVSPS output is
--8<--
$ cvsps -A
WARNING: revision 1.1.2.1 of file a.txt on unnamed branch
---------------------
PatchSet 1 
Date: 2006/06/19 20:10:09
Author: sszakiro
Branch: HEAD
Tag: (none) 
Log:
added a.txt

Members: 
        a.txt:INITIAL->1.1 

---------------------
PatchSet 2 
Date: 2006/06/19 20:10:45
Author: sszakiro
Branch: #CVSPS_NO_BRANCH
Ancestor branch: HEAD
Tag: (none) 
Log:
br1 update

Members: 
        a.txt:1.1->1.1.2.1 

---------------------
PatchSet 3 
Date: 2006/06/19 20:11:18
Author: sszakiro
Branch: HEAD
Tag: (none) 
Log:
HEAD update

Members: 
        a.txt:1.1->1.2 

---------------------
PatchSet 4 
Date: 2006/06/19 20:12:07
Author: sszakiro
Branch: br1
Ancestor branch: HEAD
Tag: (none) 
Log:
2nd branch update

Members: 
        a.txt:1.2->1.2.2.1 
------