SubversionFAQ
Aus SKM Wiki
Inhaltsverzeichnis |
[bearbeiten] Subversion FAQ
[bearbeiten] Viele Projekte -> Viele Repositories?
Es wird oft die Frage gestellt, ob man im Rahmen von Subversion für die Verwaltung von mehreren Projekten denn nun ein Repository benötigt oder pro Projekt ein Repository?
Die Frage ist einfach zu beantworten: Man benötigt nur ein Repository.
Es gibt nur dann ein Argument mehrere Repositories zu erstellen, wenn man das Thema Sicherheit in der Form ins Spiel bringt, das auch eventuelle Fehlkonfigurationen seitens der Zugriffe auf das Repository nicht zu Problemen führen soll. Nun das Ganze mal Anhand eines Beispiels.
Nehmen wir einmal folgende Verzeichnisstruktur in einem Repository an:
/ ! +-- P1 +-- P2 +-- P3
Jetzt Definieren wir einmal Zugriffsrechte für dieses Repository:
[/p1] user1 = rw [/p2] user2 = rw
Wenn man nun bei dieser Konstellation, die Zugriffsrechte in dieser Form ändert:
[/p1] user1 = rw [/] user2 = rw
Wenn diese gemachte Änderung nicht beabsichtigt ist, sondern auch nur ein Tippfehler ist, dann hat mit dieser Konfiguration der user2 in diesem Falle vollständigen Zugriff auf das Gesamte Repository bzw. vor allem auf das Verzeichnis p1. Es kann nun aber sein, dass user2 ein externen Mitarbeiter ist, der eigentlich auf diesen Teil des Repositories keinen Zugriff haben soll bzw. darf...
Bei der Nutzung von seperaten Repositories ist die Wahrscheinlichkeit einer solchen Fehlkonfiguration deutlich geringer.
Diskussion im Blog von CollabNet
[bearbeiten] Zwei Projekte aber nur eine Versionsnummer?
Subversion verwendet eine einzige Versionnummer für das gesamte Repository. Die Versionnummer wird bei jedem Commit bzw. bei jeder Änderung am Repository (Umbennen etc.) um eins erhöht.
Wenn wir im Zusammenhang mit Subversion von Projekten sprechen, ist einfach ein Verzeichnisname auf der obersten Ebene gemeint.
/ ! +--- Projekt1 ! +--- Projekt2 ! +--- Projekt3
Subversion unterscheidet hier Anhand des unterschiedlichen Namens (Verzeichnis) die Bereiche von einander. Somit ist es auch kein Problem, wenn Projekt1 einige Commits macht z.B. fünf Stück (Revision 5,6,7,8,9,10) und dann Projekt2 einen Commit macht und somit die Revision Nummer 11 erhält. Wenn nun wieder Projekt1 ein Commit macht, erhält hier das Projekt1 die Revision 12. Ist das ein Wiederspruch bzw. ein Problem? Nein. Die Revisionnummer ist im gesamten Repository nur einmal vorhanden. Um nun eindeutig zuzuordnen, welches Projekt welche Revision hat ist es hier Notwendig den Zusammenhang zwischen Revisionnummer und dem Pfad im Repository anzugeben. Das bedeutet, mit der Angabe Revision 12 und Projekt1 ist im gesamten Repository eindeutig welche Revision und welche Pfad gemeint ist.
Es ist wichtig zu Verstehen, dass Subversion keinerlei Annahmen bzw. Voraussetzungen bzgl. der Namensgebung bzgl. der Verzeichnisse hat. Man kann hier völlig Frei selbst wählen. Es haben sich aber einige Best-Practices herausgestellt, die man durchaus einhalten sollten und nur unter gewissen Umständen davon abweichen sollte.
[bearbeiten] Welche Struktur für das Repository ist die einzig Wahre?
Die Antwort auf diese Frage ist schlicht: Keine. Das liegt daran, dass die Struktur eines Repositories basierend auf den Anforderungen gewählt werden sollte. Oft ist es so, dass in einem Repository mehrere Projekte liegen. Das bedeutet, dass eine Struktur vorliegt.
[bearbeiten] Eine Revisionsnummer pro Projekt
Es kommt oft vor, dass gefordert wird, dass die Revisonsnummer aufsteigend und fortlaufend ist. Wenn das unbedingt Notwendig sein sollte, so wäre die Einzige Lösung darin zu suchen, pro Projekt ein eigenes Repository aufzusetzen. Das ist aber eigentlich nicht notwendig. Zu Kennzeichnung von Releases etc. sind Tags bzw. Branches das adäquate Mittel und nicht die Revisionnummer. Das bedeutet, dass vor der Auslieferung eines Software ein Tag gesetzt wird und somit der Bezug zu diesem Tag stattfindet und nicht mehr auf die Revisionnummer. Etwas eingehender Betrachtet ist die Revisionnummer für den Anwender nicht von Relevanz, lediglich dann, wenn Tags/Branches erstellt werden oder Merges durchgeführt werden sollen.
[bearbeiten] Release/Tags/Revisionsnummern
Häufig wird gefragt, ob es möglich ist mit Subversion eine Revisionsnummerierung in der Form 0.0.1, 0.0.2 etc. zu ermöglichen, um z.B. eine Kennzeichnung einer Release etc. abzubilden.
Zuerst einmal, ist es in Subversion nicht möglich dass Nummerierungschemata im Repository (1, 2, 3, ...) zu ändern, dass ist fix von Subversion vorgegeben. Die Darstellung eines Release-Schematas bzw. ein Nummerierungschemata abzubilden sind Tags das Mittel der Wahl.
Ein Tag dient dazu einen bestimmten Stand zu einem bestimmten Zeitpunkt festzuhalten. Das bedeutet, dass um eine Nummerierung wie die vorher genannte Abzubilden, ist es notwendig entsprechende Tags zu erstellen, die dann entsprechend Benannt sind.
- R1.0.0
- R0.1.0-Alpha
- R1.2.0RC1
- RELEASE-2.0.0RC3
- R1.4.2-Beta
Dabei sollte man beachten, dass man sich vorher überlegt, welche Bedeutung die unterschiedlichen Nummern in der Kennung haben. Die Festlegung des Schemata wird im Rahmen des Software Konfigurations Management Planes gemacht.
Hier mal eine Liste zur Anregung wie eine solche Festlegung aussehen könnte:
