CVS-Server

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:

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


zurück