Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.
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