[cvsnt] Latest Updates - CVSNT 2.5.04 Build 3052 (RC6) and 3055(RC7)
Arthur Barrett
arthur.barrett at march-hare.com
Tue May 6 22:55:44 BST 2008
Jan/Gerhard,
OK - second try - I left out some important info the first time...
> > Great - we definitely need someone to write the documentation... ;)
> >
> > This feature has been stable for some time, I've been using
> > it myself to
> > test it out (albeit on a debian linux 'server').
>
> Could you give us a hint on how to get it up and running?
>
Another documentation volunteer! The current documentation is in the
source code ;)
Overview
--------------
1. The slave communicates to the master cvsnt server using the :sync:
protocol - so that must be installed.
2. You need to install some mechanism to 'sync' the master repo back to
the client (excluding the CVSROOT directory). On linux you can use
'rsync' or on windows or linux you can use 'unison'. Our current setup
uses 'rsync' 2.6.9.
3. You can optionally create a CVSROOT script (postcommit, postcommand)
on the 'slave' to automatically fire off an rsync.
Detail
--------------
1.
Obviously you get the 'master' repository up and running first (which is
the same as it has always been) then you set up a slave.
2.
On the slave you need to setup the sync protocol (examples taken from
our server with only the physical locations and passwords changed):
'slave' /etc/cvsnt/Plugins
SyncProtocol=1
'slave' /etc/cvsnt/PServer
Repository0=/opt/repo/cvs
Repository0Name=/cvs
Repository0Description=CVSNT Repository mirror
Repository0Default=1
Repository0Publish=1
Repository0Online=1
Repository0Type=3
Repository0RemoteServer=remote.server.org
Repository0RemoteRepository=/usr/local/cvs
Repository0ProxyPhysicalFiles=/var/repo/proxy
Repository0ProxyPasswdFiles=1
Repository0RemotePassphrase=&^$&(HDIDLS?
CompressionLevel=0
CertificateFile=/etc/cvsnt/secret.pem
PrivateKeyFile=/etc/cvsnt/secret.pem
AnonymousUsername=cvs
AnonymousProtocol=pserver
'master' /etc/cvsnt/Plugins
SyncProtocol=1
'master' /etc/cvsnt/PServer
Repository0=/var/repo/cvs
Repository0Name=/usr/local/cvs
Repository0Description=cvsnt main repository
Repository0Default=1
Repository0Publish=1
Repository0Online=1
CertificateFile=/etc/cvsnt/brain.crt
PrivateKeyFile=/etc/cvsnt/brain.key
ServerPassphrase=&^$&(HDIDLS?
RunAsUser=woopie
AllowTrace=1
AnonymousUsername=cvs
AnonymousProtocol=pserver
These settings are also available in the Windows CVSNT Control Panel.
The 'passphrases' I believe are 'passwd' encrypted.
3.
You need to install some mechanism to 'sync' the master repo back to the
client (excluding the CVSROOT directory). On linux you can use 'rsync'
or on windows or linux you can use 'unison'. Our current setup uses
'rsync' 2.6.9.
note: this described technique uses rsync - do not attempt to set up
rsync on windows - use unison instead.
Note2: the commercial version of CVSNT 'CVS Suite Plus' or 'CVS Suite
Multi Site' due for release in a few months uses a plugin for this part
- the 'sync' trigger.
'slave' crontab (on windows use the windows scheduler)
# m h dom mon dow command
# run every 5 minutes
*/5 * * * 0-6 /path/to/rsync.sh
You can optionally create a CVSROOT script (postcommit, postcommand) on
the 'slave' to automatically fire off an rsync.
'slave' CVSROOT/postcommand:
#
/path/to/rsync.sh
'slave' /path/to/rsync.sh
#!/bin/sh
# /usr/sbin/ntpdate 0.au.pool.ntp.org
ps -ef | grep /usr/bin/r[s]ync
while [ "$?" -eq 0 ]
do
exit
echo "rsync users still active, try in 30 seconds"
sleep 30
ps -ef | grep /usr/bin/r[s]ync
done
echo "+++++++++++++++++" >> /path/to/cvs-sync.log
date >> /path/to/cvs-sync.log
echo "+++++++++++++++++" >> /path/to/cvs-time.log
date >> /path/to/cvs-time.log
echo "+++++++++++++++++" >> /path/to/cvs-sync.err
date >> /path/to/cvs-sync.err
/usr/bin/time -a -o /path/to/cvs-time.log /usr/bin/rsync -4 -avz
--delete --exclude CVSROOT remote.server.org::rsync-name /opt/repo/cvs
>> /path/to/cvs-sync.log 2>> /path/to/cvs-sync.err
date >> /path/to/cvs-sync.log
echo "-----------------" >> /path/to/cvs-sync.log
date >> /path/to/cvs-time.log
echo "-----------------" >> /path/to/cvs-time.log
date >> /path/to/cvs-sync.log 2>> /path/to/cvs-sync.err
echo "-----------------" >> /path/to/cvs-sync.err
'master' /etc/rsyncd.conf
[rsync-name]
comment = master private sync
path = /var/repo/cvs
use chroot = yes
read only = yes
list = no
uid = nobody
gid = nogroup
hosts allow = 11.11.111.111 22.22.222.222 33.333.0.0/16
10.0.0.0/8
strict modes = yes
ignore errors = no
ignore nonreadable = yes
timeout = 600
refuse options = checksum dry-run
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2
*.tbz
OK - that really is pretty much all I have.
Regards,
Arthur
More information about the cvsnt
mailing list