[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