# ports-mgmt/portcheckout still uses CVS?



## ShelLuser (May 31, 2013)

Hi gang,

Due to some recent stupidity on my part I decided to spend this evening reading up on the Porters handbook some more and look into the several available utilities for managing your port collection.

ports-mgmt/portcheckout is what I'd call a "high profile port" because it's explicitly mentioned in the ports(7) manualpage: "_The portcheckout(1) (ports-mgmt/portcheckout) script (also a port, of course!) will help to download new ports._"

After you downloaded it you can check the portcheckout(1) manualpage which says that: "_Portcheckout(1) uses cvs(1) by default to check-out port skeletons._". But hasn't CVS been replaced by Subversion recently?

So I decided to begin easy and try a non-destructive option from the manualpage: "_Print-out the shell commands to checkout de-dict and dependences_":


```
smtp2:/home/peter $ portcheckout de-dict
cvs checkout: No CVSROOT specified!  Please use the `-d' option
cvs [checkout aborted]: or set the CVSROOT environment variable.
Cannot read INDEX file. Give up!
```
Needless to say, but this is not what I'd expected from what I consider to be a high profile port.

Because the manualpage mentions that this script uses CVS by default I think this somewhat implies that it also should be able to use Subversion. The "SEE ALSO" section doesn't look convincing though:


```
SEE ALSO
       See also [man=7]ports[/man], [man=1]cvs[/man], [man=1]cvsup[/man].
```

So I decided to look into /usr/local/bin/portcheckout myself and I noticed that the use of CVS is actually hard coded into the script:


```
# Read the Ports Index from the CVS Repository if
    # the file name is relative.
    #
    # Note: this can took some time if you run CVS over a
    # slow link (anonymous CVS or CVS over ssh).
    if ($index =~ m%^[a-z]+/INDEX%oi) {
        my @exec = ('cvs', '-Q', 'co', '-p');
        push(@exec, $release) if $release;

        open(INDEX, "-|") ||
            exec (@exec, $index) ||
                die "Cannot execute @exec $index\n";
    }
```

The section which generates the "checkout script" seems only capable of generating a script which uses CVS:


```
# uncomment next line if you have write permission to /usr/ports/distfiles
#print qq{DISTDIR="/usr/ports/distfiles"; export DISTDIR\n};

print "\n# checkout FreeBSD ports system Makefiles\n";
print "cvs checkout -P $release ports/Mk\n";
print "cvs checkout -P $release ports/Templates\n\n";
```
So I'm a bit puzzled here.

Shouldn't this script have been updated or removed as well by now?


----------



## wblock@ (Jun 1, 2013)

Scripts that count on CVS could still be useful for people who run their own CVS repositories.  The maintainer may be planning an update, or to remove the port after a suitable period.


----------

