[linux-l] cvs

Steffen Dettmer steffen at dett.de
So Mär 9 15:35:36 CET 2003


* Rainer Flicker wrote on Sat, Mar 08, 2003 at 19:36 +0100:
> > Achtung!!
> > 
> > chmod +s fehlt!!

> Wieso, dafür ist doch die Gruppe cvs da. Es müssen natürlich
> die User, die Zugriff auf das cvs erhalten sollen, der Gruppe
> cvs hinzugefügt werden.

Nee, reicht nicht (korrigier' mich, wenn ich falsch liege!)

Wenn ein User "anna" Gruppe "users" eine Datei eincheckt, gehört
die (wenn "s" fehlt), im CVS auch der Gruppe anna. Wenn dann
"rainer", Gruppe "development" kommt, kann er die Datei nicht
über Gruppenschreibrechte ändern - selbst wenn beide in der
Gruppe "cvs" sind. Wenn +s gesetzt ist, ist die Gruppe der neuen
Dateien nicht die (Primär)Gruppe des Benutzers, sondern die des
Verzeichnisses (sofern der Benutzer dort Mitglied ist). Dann
gehört die Datei also nicht "anna:users", sondern "anna:cvs".

> > Versteh ich nicht. cvs init benutzt doch CVSROOT?

> Für das "cvs init" muss $CVSROOT auf das cvs-Verzeichnis gesetzt werden
> (z.B. export CVSROOT=/home/cvsroot). Das funktioniert allerdings nur
> lokal. Möchte man aber auch über das Netzwerk zugreifen können, so muss
> man die vollständigen CVSROOT-Umgebungsvariable setzen.
> z.B.:

> $ export EDITOR=/usr/bin/vi

na ja, hat nicht direkt was mit CVS zu tun und ist default.

> $ export REPOSITORY_HOST=foo.bar.com
> $ export CVSUSER=foo

Beides Deine Erfindungen?

> $ export CVS_RSH=/usr/bin/ssh

Klar, da rsh ja keiner will. Gibt aber auch noch pserver. Weiß
aber nicht, ob da init geht. Vermutlich geht das aber auch.

> $ export CVSROOT=:ext:$CVSUSER@$REPOSITORY_HOST:/home/cvsroot

Hier schreibt man ja meistens sowas wie:

export CVSROOT=:ext:steffen at cvs.dom.de:/home/repositories/websites

> $ export CVSREAD=yes

Kenn ich nicht.

> > CVSROOT hat
> > IMHO den großen Nachteil, daß es schlecht mit mehreren
> > Repositories funktioniert. Ein Vorteil ist hier die "-d" Option.

> Die "-d" Option überschreibt auch nur $CVSROOT.

Genau. Aber es gibt ja nur eine CVSROOT. Die braucht man nur zum
Auschecken, danach wird ja CVS/Repository verwendet. Da man (bis
auf init) die Option/Variable i.d.R. nur einmal braucht, schreibt
man oft:

cvs -d :ext:st at dom.de:/home/repos/www co -d www-repo .

Da muß man dann nicht prüfen, welches Repository nun im CVSROOT
eingestellt ist (da man ja schnell mehrere hat). CVSROOT ist
natürlich komplett richtig und gut, nur mit mehreren Repositories
finde ich -d oft günstiger.

> Wenn Du die "-d" Option von cvs verwendest, muss Du bei jeder cvs-Aktion
> die vollständige CVSROOT-Umgebungsvariable mitangeben, z.B.
> $ cvs -z3 -d ":ext:foo at foo.bar.com:/home/cvsroot" co <module>
> statt
> $ cvs -z3 co <module>

Nein, nicht bei jeder, sondern nur genau bei dieser. co macht man
ja meist nur einmal. up und ci holen sich die Info ja aus
CVS/Repository (sonst könnte man ja gar nicht mit verschachtelten
Repos/Sandboxes arbeiten). Es funktioniert ja:

$ cvs -d :ext:st at dom.de:/home/repos/www co -d www-repo .
$ cvs -d :ext:anna at d2.com:/home/repos/styles co webstyles
$ cd www-repo
$ cvs -d :ext:st at dom.de:/home/repos/tools co -d checker xmltools/checker
$ cvs -d :ext:st at dom.de:/home/repos/tools co -d publish misc/publish
$ cd ..

und dann kann man in www-repo ein "cvs update" machen, daß
updatet dann die ausgecheckten Sachen von deren Quelle, egal, was
CVSROOT anzeigt.

Aber das sind natürlich Details. 

Schönes Wochenende!

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.




Mehr Informationen über die Mailingliste linux-l