Informatik und Kram

Da wir lange nicht wußten, wo wir das für die Uni ausgearbeitete Material unterbringen sollten und auch einen schrecklichen Drang hatten der Welt diverse Sachen aufzudrücken...

CVS easy Howto Server und Client
de-flagge aktiviert en-flagge deaktiviert

Da ich selbst den ganzen CVS Kram eigentlich nicht zwingend jeden Tag nutze, mußte ich jetzt mal wieder alles nachschlagen. Da dachte ich mir ich schreibe es hier einfach mal nieder, damit zumindestens ich nicht jedes mal wieder quer durchs Netz muß bis ich mal wieder was nützliches und vielleicht nicht zu umfangreiches gefunden habe...
Zuerst wollen wir mal flott einen CVS Server aufsetzen, ganz ohne ssh und so Kram, weil wir ja kein NSA Projekt entwickeln sondern nur ein ganz einfaches GPL Projekt.
Also dann mal los, hands-on quasi:
# installiere cvs
pacman -S cvs
# erstelle das repository
cvs -d /some/path/to/cvsroot init
# erstelle user (gruppe automatisch mit)
useradd cvs
# vergebe rechte
chown -R cvs.cvs /some/path/to/cvsroot
# füge zeile zur /etc/services bei
# (könnte schon drin sein, aber 2 mal macht auch nix)
echo "cvspserver 2401/tcp #CVS PServer" >> /etc/services
# wir werden mal xinetd benutzen, dafür folgendes file
cat > /etc/xinetd.d/cvspserver << "EOF"
service cvspserver
{
  socket_type   = stream
  protocol   = tcp
  wait    = no
  user    = root
  passenv    =
  server    = /usr/bin/cvs
  server_args   = --allow-root=/some/path/to/cvsroot pserver
  disable    = no
}
EOF
# so nun noch flott xinetd restarten
/etc/rc.d/xinetd restart
# jetzt können wir in den cvs user wechseln
su cvs
# dann noch das passwort für den anoncvs-user
# das macht man meist mit sowas zB:
cat > /tmp/passwd.pl << "EOF"
#!/usr/bin/perl

srand (time());
my $randletter = "(int(rand(26))+(int(rand(1)+.5)%2?65:97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);

print "$plaintext:${crypttext}:cvs";
EOF
# so mit dem script können wir nun unsere passwd
# erstellen und an die richtige stelle packen
perl /tmp/passwd.pl anoncvs > /some/path/to/cvsroot/CVSROOT/passwd
# damit haben wir auch ein passwort erstellt
# das jetzt noch schnell sichern
chmod 400 /some/path/to/cvsroot/CVSROOT/passwd 	 
So da haben wir ja auch schon einen Server fertig.
Jetzt noch schauen wie das alles so funktionieren könnte mit dem CVSen von einem Client aus.
Auch alles direkt hier hands-on und so:
# ersteinmal den CVSROOT exportieren
export CVSROOT=:pserver:anoncvs@meinserver.de:/some/path/to/cvsroot/
cvs login
# dann das passwort eingeben, bei unserem beispiel war dies auch anoncvs
# jetzt mal schaun was können wir alles machen

# importiere existierendes projekt ins repository
cd /path/to/my/projektname
cvs import -m "initial cvs import" projektname firmenname start
# "start" ist eine art versionsinfo, mit dem import wird _alles_ im aktuellen
# verzeichniss als projekt angesehen und ins cvs importiert

# toll jetzt kann man woanders das projekt auschecken
cd /bla/workdir
cvs co projektname
# und er zieht alles komfortabel ins workdir

# jetzt hat man was lokal geändert, weiß aber nicht was genau
# im workdir einfach mal
cvs update
# zeigt einem mit einem "M" vor dem Dateinamen, dass hier
# was geändert wurde

# aber ich will natürlich genau sehen was geändert wurde
cvs -Q diff -c
# zeigt mir jetzt context-diffs, die mir schon genau zeigen wo und
# was jetzt genau geändert wurde...

# na ja und jetzt haben wir hier lokal was geändert und wollen
# dass alle ihren spaß dran haben, also commiten wir einfach
cvs commit -m "hier eine beschreibung dieses commits"
# und fertig...

# interessant sind noch
cvs log
cvs status
# selbsterklärend eigentlich, aber na ja, man kann ja auch
# nach der referenz im netz wühlen 	 
So das wars auch schon,
und wieso das ganze?
Na ja, ist doch klar LapLock kriegt nen CVS-Server deshalb hier mal schnell zusammengefaßt, damit nicht immer wieder danach gesucht wird^^

Kommentare

Kommentar schreiben