# PVCS (or RCS) importer for Git?

3 messages from 2008-03-28 to 2008-03-31. Participants: Peter Karlsson, Johannes Schindelin.
Thread: https://gitlist.dev/t/12906

## Peter Karlsson, 2008-03-28 16:17

Subject: PVCS (or RCS) importer for Git?
Message-ID: <Pine.LNX.4.64.0803281713230.24460@ds9.cixit.se>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803281713230.24460%40ds9.cixit.se

```
Hi!

Has anyone written an importer to import sources stored in PVCS into
Git? Or perhaps an RCS importer that actually uses the RCS binaries
(ci, co, rlog) instead of parsing the ,v files directly?

I am looking at exporting some PVCS sources into Git, but my attempts
so far hasn't got very far, and I was thinking that maybe someone else
had done something similar?

One problem with PVCS is that it, like RCS, has file-local revision
numbering, and that it does not have named branches, the branches are
on the same file-local revisions, so there is no way of telling what a
branch is supposed to point to, except by looking at tags set to what
the branch created.

RCS is quite similar (PVCS seems to be designed to be a RCS clone), so
perhaps the problem has already been solved?


I have had some limited success by running a the pvcs2rcs.pl script
from CVS's sources and converting that to Git using cvs2svn, but I
believe the result could be better if I converted directly.

-- 
\\// Peter - http://www.softwolves.pp.se/

```

## Johannes Schindelin, 2008-03-28 16:33

Subject: Re: PVCS (or RCS) importer for Git?
Message-ID: <alpine.LSU.1.00.0803281730060.18259@racer.site>
URL: https://gitlist.dev/e/alpine.LSU.1.00.0803281730060.18259%40racer.site
In-Reply-To: <Pine.LNX.4.64.0803281713230.24460@ds9.cixit.se>

```
Hi,

On Fri, 28 Mar 2008, Peter Karlsson wrote:

> Has anyone written an importer to import sources stored in PVCS into
> Git?

I once tried, but apparently, there are different repository formats for 
PVCS.  For example, pvcs2cvs did not work for me.  IIRC I used a simple 
shell script to convert pvcs (using the mega-slow command line tools) to 
,v files.  Then I converted that to Git.

But it was pretty bad, the incremental update was broken more often than 
not.

And after a few days, it became apparent that I do not need a full import, 
but that a simple commit-to-git-after-a-pvcs-update would be sufficient.

> I have had some limited success by running a the pvcs2rcs.pl script from 
> CVS's sources and converting that to Git using cvs2svn, but I believe 
> the result could be better if I converted directly.

Judging from the problems of importing CVS to Git (which mostly stem from 
the file-versioning paradigm), I suggest not trying to be too clever, but 
convert it to cvs and use a good cvs importer, such as cvs2svn (which 
despite its name also imports into Git) or parsecvs.

Ciao,
Dscho

```

## Peter Karlsson, 2008-03-31 06:26

Subject: Re: PVCS (or RCS) importer for Git?
Message-ID: <Pine.LNX.4.64.0803310723440.26808@ds9.cixit.se>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0803310723440.26808%40ds9.cixit.se
In-Reply-To: <alpine.LSU.1.00.0803281730060.18259@racer.site>

```
Johannes Schindelin:

> I once tried, but apparently, there are different repository formats
> for PVCS. For example, pvcs2cvs did not work for me.

Yeah, the format is binary. That is why I am trying to use the
command-line tools.

> IIRC I used a simple shell script to convert pvcs (using the
> mega-slow command line tools) to ,v files.  Then I converted that to Git.

That is, more or less, what the pvcs2cvs script does. I've had some
success with it.

> Judging from the problems of importing CVS to Git (which mostly stem
> from the file-versioning paradigm), I suggest not trying to be too
> clever, but convert it to cvs and use a good cvs importer, such as
> cvs2svn (which despite its name also imports into Git) or parsecvs.

Given that the PVCS history file ("trail") that I was trying to follow
didn't quite work out, because there had been some direct manipulations
of the PVCS repository that were not recorded there, I think that is
the way I will have to go. That means I do lose the tagging
information (timestamp and tagger), but I can live with that...

Thanks for the input.
-- 
\\// Peter - http://www.softwolves.pp.se/

```
