Konfiguration
CVS wird über den daemon xinetd (oder auf älteren Systemen über inetd) kontrolliert und nach Bedarf gestartet.
Die Konfiguration erfolgt in der Datei /etc/xinetd.d/cvs
Dabei wird im Idealfall nur das „disable = yes“ nach „no“ geändert.
Bsp:
#default: off service cvspserver { disable = no socket_type = stream protocol = tcp wait = no user = root server = /usr/bin/cvs server_args = -f --allow-root=/usr/data/cvs_repos pserver log_on_failure += USERID }
Mitunter stirbt cvs beim ein/auschecken von sehr großen Dateien wegen zu wenig RAM. Um das zuverhindern sollte ein tmp-Verzeichnis mit genug Platz festgelegt werden.
Auch muss der Benutzer cvs Schreibzugriff auf das TMP-Verzeichnis haben.
Bsp:
... server_args = -f -T /iscsi/tmp --allow-root=/my/cvsdirectory/cvs_repos pserver log = /var/log/cvslog ...
Das Volume muss natürlich vorhanden und gemountet sein.
anschließend noch xinetd neu starten:
/etc/init.d/xinetd restart
CVS-Repo initialisieren und befüllen:
cvs -d /my/cvsdirectory/cvs_repos init
Jetzt testweise ein erstes Verzeichnis anlegen und das Repo befüllen:
mkdir myCVSTree echo "erster Eintrag von ich">/myCVSTREE/ersteDatei.txt cd myCVSTree cvs import -m "erster Initialload von ich" myCVSTree rb start
jetzt sollte das Repo erstellt werden. Das alte Verzeichnis kann dann wieder gelöscht werden.
rm -rf myCVSTree
Eventuell gibt es manchmal Zugriffsprobleme wenn ein anderer Benutzer zum Starten des CVS-Programms benutzt wird.
neuen Benutzer im CVS anlegen:
Jeder CVS-Benutzer soll einen eigenen CVS-Account haben, keinen eigenen Linuxaccount.
Das hat den Vorteil, dass bei Löschungen im CVS-Tree sich keiner herausreden kann, er seis nicht gewesen.
Deshalb wird CVS so eingerichtet, dass es über die CVSROOT/passwd-Datei gesteuert wird.
Als Systembenutzer wird ein User „cvs“ erstellt,der Dateisystemzugriff auf das Repo hat.
Beispiel:
erst testen:
cvscrypt.pl doedel geheim cvs
wenns klappt dann übernehmen:
cvscrypt.pl doedel geheim cvs >>/my/cvsdirectory/cvs_repos/CVSROOT/passwd
Hier die Datei cvscrypt.pl:
#!/usr/bin/perl # einen passworthash erstellen /js # Benutzung : cvscrypt.pl cvsbenutzer passwort systembenutzer open(FILE,"</my/cvsdirectory/cvs_repos/CVSROOT/passwd") || die "Datei existiert nicht\nEnde\n"; srand (time()); my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))"; my $salt = sprintf ("%c%c", eval $randletter, eval $randletter); my $cvsuser = shift; my $plaintext = shift; my $user = shift; my $crypttext = crypt ($plaintext, $salt); #my $user = shift; @Zeilen = (""); while (<FILE>) { push(@Zeilen,$_); } close(FILE); for(@Zeilen) { if ($_ =~ /${cvsuser}/) { print "\n${_}\n\nFehler!\n\ncvsbenutzer \"${cvsuser}\" existiert schon\n\n "; exit; } } print "${cvsuser}:${crypttext}:${user}\n";
testen des neuen Accounts von einem beliebigen Client aus:
#windows set CVSROOT=:pserver:cvsdoedel:geheim@mycvsserver:/my/cvsdirectory/cvs_repos #linux export CVSROOT=:pserver:cvsdoedel:geheim@mycvsserver:/my/cvsdirectory/cvs_repos cvs login cvs checkout myCvsTree
Zugriff auf das Repo lokal:
cvs -d :local:/my/cvsdirectory checkout myCVSTree
Zugriff auf das Repo per ssh:
export CVS_RSH="ssh" cvs -d :ext:cvsdoedel@mycvsserver:/my/cvsdirectory/cvs_repos checkout myCvsTree cvsdoedel@mycvsserver's password:
Der Vorteil ist hierin, dass es mit Gruppen über ssh steuerbar ist.
History anzeigen lassen:
set CVSROOT=:pserver:cvsdoedel:geheim@mycvsserver:/my/cvsdirectory/cvs_repos cvs login cvs history -a