Add another example that shows how to map a cvs server into your local
file system so that you can pull random files out of it easily.
This commit is contained in:
parent
031a62292d
commit
9305145646
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.1 1999/08/16 06:42:48 bgrayson Exp $
|
||||
# $NetBSD: Makefile,v 1.2 2001/10/11 18:41:11 atatat Exp $
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
@ -6,7 +6,8 @@
|
||||
FILESDIR= /usr/share/examples/mount_portal
|
||||
|
||||
FILES= overview advanced.1 advanced.1.conf fing.c rfilter.1 \
|
||||
rfilter.2 rfilter.2.conf tcp.1 tcp.1.conf fs.1 fs.1.conf
|
||||
rfilter.2 rfilter.2.conf tcp.1 tcp.1.conf fs.1 fs.1.conf \
|
||||
cvs.1 cvs.conf cvs.pl
|
||||
.endif
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
78
sbin/mount_portal/examples/cvs.1
Normal file
78
sbin/mount_portal/examples/cvs.1
Normal file
@ -0,0 +1,78 @@
|
||||
The cvs.conf portal configuration file maps the NetBSD anoncvs
|
||||
respository into the local file system. This means you can cat(1)
|
||||
or cp(1) copies of any arbitrary file or revision from the cvs
|
||||
server using a local path. Start off like this:
|
||||
|
||||
# mkdir /p
|
||||
# mount -t portal `pwd`/cvs.conf /p
|
||||
# chmod +x cvs.pl
|
||||
#
|
||||
|
||||
The next step is to set up the authentication. The NetBSD anoncvs
|
||||
server uses ssh for authentication, so all you need to do is
|
||||
|
||||
# ssh anoncvs@anoncvs.netbsd.org
|
||||
|
||||
and answer 'yes' when it asks you if you want to accept the key.
|
||||
Now the NetBSD source tree is close at hand.
|
||||
|
||||
First, some caveats. File name completion and globbing don't work,
|
||||
and diff has difficulties with this since it stat()s the file names
|
||||
it's given and gets back more or less meaningless information for
|
||||
names under a portal file system. You also need to have perl
|
||||
installed for the cvs.pl script that supports this configuration.
|
||||
The script expects to find perl in /usr/pkg/bin, so change the
|
||||
script if you have perl installed somewhere else.
|
||||
|
||||
Here's a list of things I've done with this:
|
||||
|
||||
1) diff one of my files (eg, /etc/security) against the repository
|
||||
|
||||
% grep NetBSD: /etc/security
|
||||
# $NetBSD: security,v 1.52 ...
|
||||
% diff -u -< /p/netbsd/basesrc/etc/security,1.52 /etc/security
|
||||
[ diffs elided ]
|
||||
%
|
||||
|
||||
Notice the use of the - file given to diff and the input redirection
|
||||
so that it will read from stdin instead of opening the file itself.
|
||||
This gets around the stat() problem.
|
||||
|
||||
2) Check out some (or all) versions of a file:
|
||||
|
||||
% grep NetBSD: /etc/security
|
||||
# $NetBSD: security,v 1.52 ...
|
||||
% foreach i (`jot 10 43`)
|
||||
> cp /p/netbsd/basesrc/etc/security,1.$i /tmp
|
||||
> end
|
||||
%
|
||||
|
||||
Presto! Versions 1.43 through 1.52 (jot(1) prints 10 numbers
|
||||
starting at 43) of /etc/security are copied into your /tmp directory
|
||||
so that you can do arbitrary diffs between any version you like.
|
||||
You can use tags instead of revision numbers if you like.
|
||||
|
||||
3) Instant upgrades. Since cvs always defaults to the head of the
|
||||
trunk, you can do this:
|
||||
|
||||
# cp /p/netbsd/basesrc/etc/security /etc/security
|
||||
#
|
||||
|
||||
to upgrade to the latest and greatest version any time you like,
|
||||
or you can do this:
|
||||
|
||||
# uname -r
|
||||
1.5.2
|
||||
# cp /p/netbsd/basesrc/etc/security,netbsd-1-5-PATCH002 /etc/security
|
||||
#
|
||||
|
||||
to get rid of any changes you might have made to /etc/security that
|
||||
you no longer want.
|
||||
|
||||
Note that there's some support for the FreeBSD and OpenBSD anoncvs
|
||||
service in there as well, but those might be tricky. The FreeBSD
|
||||
anoncvs server only offers pserver access, so you'll need to manually
|
||||
do a cvs login to make that work. The OpenBSD server seems to move
|
||||
around a fair amount, so the CVSROOT value for it will need to be
|
||||
updated if that happens again. You might also choose to use
|
||||
different servers entirely.
|
3
sbin/mount_portal/examples/cvs.conf
Normal file
3
sbin/mount_portal/examples/cvs.conf
Normal file
@ -0,0 +1,3 @@
|
||||
netbsd/ rfilter netbsd/ /usr/share/examples/mount_portal/cvs.pl netbsd %s
|
||||
freebsd/ rfilter freebsd/ /usr/share/examples/mount_portal/cvs.pl freebsd %s
|
||||
openbsd/ rfilter openbsd/ /usr/share/examples/mount_portal/cvs.pl openbsd %s
|
32
sbin/mount_portal/examples/cvs.pl
Normal file
32
sbin/mount_portal/examples/cvs.pl
Normal file
@ -0,0 +1,32 @@
|
||||
#!/usr/pkg/bin/perl
|
||||
|
||||
# ensure that HOME is set for pserver modes
|
||||
$ENV{'HOME'} = (getpwuid($<))[7] || "/";
|
||||
# supplement path to include ssh and cvs
|
||||
$ENV{'PATH'} = "/usr/pkg/bin:$ENV{'PATH'}";
|
||||
# use ssh instead of rsh for cvs connections
|
||||
$ENV{'CVS_RSH'} = "ssh";
|
||||
|
||||
if ($ARGV[0] eq "netbsd") {
|
||||
$ENV{'CVSROOT'} = "anoncvs\@anoncvs.netbsd.org:/cvsroot";
|
||||
shift(@ARGV);
|
||||
}
|
||||
elsif ($ARGV[0] eq "freebsd") {
|
||||
$ENV{'CVSROOT'} = ":pserver:anoncvs\@anoncvs.freebsd.org:/home/ncvs";
|
||||
shift(@ARGV);
|
||||
}
|
||||
elsif ($ARGV[0] eq "openbsd") {
|
||||
$ENV{'CVSROOT'} = "anoncvs\@anoncvs.usa.openbsd.org:/cvs";
|
||||
shift(@ARGV);
|
||||
}
|
||||
else {
|
||||
print("configuration not supported\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
foreach $file (@ARGV) {
|
||||
($file, $rev) = ($1,$3) if ($file =~ /(.*),(-r)?([\d\.]+|[-a-zA-Z\d]+)$/);
|
||||
$cmd = "co -p";
|
||||
$rev = "-r $rev" if ($rev);
|
||||
system("cvs $cmd $rev $file");
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
$NetBSD: overview,v 1.1 1999/08/16 06:42:48 bgrayson Exp $
|
||||
$NetBSD: overview,v 1.2 2001/10/11 18:41:12 atatat Exp $
|
||||
|
||||
Overall notes:
|
||||
|
||||
@ -26,6 +26,8 @@ Descriptions of files in this directory:
|
||||
rfilter.1 Simple rfilter usage: bunzip2/bzcat
|
||||
rfilter.2 Advanced rfilter usage
|
||||
advanced.1 A tutorial
|
||||
cvs.1 How to map a cvs server into your local file system
|
||||
cvs.pl A perl script that does the work for the cvs configuration
|
||||
|
||||
In progress:
|
||||
wfilter.1 Simple wfilter usage: bzip2
|
||||
|
Loading…
x
Reference in New Issue
Block a user