ACL und Begriffsabgrenzung mit / bei Subversion

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
hawkeye78
Beiträge: 430
Registriert: 10.09.2004 17:02:01
Wohnort: castrop-rauxel

ACL und Begriffsabgrenzung mit / bei Subversion

Beitrag von hawkeye78 » 29.11.2011 20:53:39

Hallo,

ich versuche gerade anhand dieses Tutorials[1] zu verstehen wie die Authentifizierung für Subversion funktioniert. Allerdings stolpere ich im moment ein bißchen über die Begriffe, um das ganze nachzuvollziehen habe ich bis jetzt folgendes gemacht:

Code: Alles auswählen

mkdir -p /var/local/svn/foobar
svnadmin create /var/local/svn/foobar
chown -R www-data:www-data /var/local/svn/foobar
Nun steht im Tutorial das sich in der dav_svn.passwd die Position [/] auf das Root des Repositories bezieht, hier ergibt sich für mich die Frage bezieht sich das auf alles was unterhalt von foobar liegt? Den falls ja was würde passieren wenn ich dort [/foobar] angebe? Nach meinem Verständnis müßte dies das gleiche sein, aber sicher bin ich mir da nicht... Des weiteren Frage ich mich wie ist im Terminus von Subversion ein Projekt definiert ist das alles was unter trunk, branch bzw. tags liegt? oder ein explezites Verzeichnis in einem dieser Verzeichnisse?
Ich würde mich über eine oder andere erklärung sehr freuen.
Viele Grüsse
Dan

[1] http://davidwinter.me/articles/2006/03/ ... and-authz/
I love deadlines. I like the whooshing sound they make as they fly by - Douglas Adams

Benutzeravatar
McAldo
Moderator
Beiträge: 2069
Registriert: 26.11.2003 11:43:36
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Terra / Sol-System / Milchstraße

Re: ACL und Begriffsabgrenzung mit / bei Subversion

Beitrag von McAldo » 01.12.2011 10:25:34

Hallo,

die "/etc/apache2/dav_svn.passwd" aus dem Tutorial enthält m.E. nur die Authentifizierungsdaten für apache_auth.

Innerhalb der VHost-Conf legst du mit <Locatian /svn> fest, dass bei Aufruf von http://server.domain.lan/svn das Verzeichnis "SVNPath /home/svn" (siehe Doku) aufgerufen wird. Das Repository ist also /home/svn und da drin liegen Projekte.

Nun mal zu deinem Beispiel:

Code: Alles auswählen

mkdir -p /var/local/svn/foobar
svnadmin create /var/local/svn/foobar
chown -R www-data:www-data /var/local/svn/foobar
Du legst hier das Verzeichnis an und machst es zu einem Repository. Dein Repo ist also "foobar". So würdest du das bei "svn co" ansprechen. Innerhalb dieses Verzeichnisses (bzw. Repos) legst du Projekte an. Diese können dann die Verzeichnisse trunk, tag, ... enthalten, müssen aber nicht. Es gibt da je nach Anforderung an die Struktur und das Umfeld mehrere Varianten der Verzeichnisstruktur.

Möglichkeiten:

1) Repository ist gleich Projekt:
Wahrscheinlich die einfachste Variante. Du legst dein Das Repository mit "svnadmin create ..." an und wirfst direkt dort rein alle deine Projektdateien. Dann hättest du für jedes Projekt ein Repo. Der Vorteil ist, jede Revisionsnummer bezieht sich auf eine tatsächliche Änderung an deinem Projekt.

2) ein Repository, viele Projekte.
Du legst wie oben ein Repository an, packst da aber verschiedene Projekte, also weitere Verzeichnisse, rein, die jeweils eigene Projektdaten enthalten. Z.B.

Code: Alles auswählen

repo
  |----- kalender
  |----- script
  |----- howtos
Der "Nachteil" dabei ist, die Revisionsnummer erhöht sich bei jedem commit. Also ein commit im Projekt "script" erhöht auch die Revision für "kalender", da die Revisionsnummer für das Repository ist.

3) Dann gibt es noch die Varianten mit den trunks, tags, .... Das könnte so aussehen:

Code: Alles auswählen

repo
  |----- kalender
  |            |----- trunk
  |            |----- tag
  |            |----- branches
  |----- script
  |            |----- trunk
  |            |----- tag
  |            |----- branches
  |----- howtos
  |            |----- trunk
  |            |----- tag
  |            |----- branches
aber auch so:

Code: Alles auswählen

repo
  |----- trunk
  |            |----- kalender
  |            |----- script
  |            |----- howtos
  |----- tag
  |            |----- kalender
  |            |----- script
  |            |----- howtos
  |----- branches
  |            |----- kalender
  |            |----- script
  |            |----- howtos
Vor-/Nachteile muss sich jeder selber überlegen. Für kleine Projekte oder nur ganz wenige Entwickler macht das vielleicht keinen Sinn.

4) Und es gibt natürlich noch die Mischform aus allem. Also viele Repositories, die auch jeweils eine Menge Projekte enthalten, mit oder ohne branches, tags, trunks ....

Das Projekt wäre in diesen Fällen z.B. "kalender", egal wo es sich befindet. Im Fall 1) ist das Repository gleich das Projekt und würde "kalender" heißen.

So, ich hoffe ich konnte etwas Klarheit verschaffen und hab dich nicht noch weiter verwirrt. :)

McAldo
Achte auf deine Gedanken, denn sie werden Worte.
Achte auf deine Worte, denn sie werden Handlungen.
Achte auf deine Handlungen, denn sie werden Gewohnheiten.
Achte auf deine Gewohnheiten, denn sie werden dein Charakter.
Achte auf deinen Charakter, denn er wird dein Schicksal.
(Talmud)

Antworten