[linux-l] Re: Versionskontrollen
Rocco Rutte
pdmef at cs.tu-berlin.de
Di Jan 23 10:42:00 CET 2007
Hi,
* Peter Ross [07-01-23 11:02:39 +1100] wrote:
>On Mon, 22 Jan 2007, Steffen Dettmer wrote:
>[Rocco]
>> Von der menschlichen Logik sind Branches immer Graphen, aber fuer
>> Subversion eben nicht. Es gibt da nur Pfade und Revisionsnummern. Dass
>> du jetzt branches/xyz als eine Branch und trunk/ als Hauptlinie
>> interpretierst, interessiert subversion nicht. Es gibt nur eine lineare
>> Liste von Aenderungen an Pfaden, die mit einander etwas zu tun haben
>> koennen aber nicht muessen.
>branches/xyz und trunk _sind_ Branches und Hauptzweig in Subversion, der
>Rest ist Implementationsdetail (auch, dass Du vielleicht theoretisch
>Deinen Hauptzweig unter ../mondschein ablegen kannst)
>Wie eine Versionskontrolle _intern_ aussieht (Datenbank, Verzeichnisbaum.
>Aenderungen speichernd oder aber den Gesamttext etc.) ist doch fuer den
>Anwender egal. Auch subversion hat Branches und eine (extern nutzbare)
>Graphenstruktur.
Eben gerade nicht. Subversion hat nur 1 Repository und darin strikt
linear Zustände von Pfaden (und zwar global für das Repository einen
Zustand, nicht pro Pfad). Das einzige, was man bei Subversion als Graph
anerkennen könnte, wäre, dass man von einem Knoten (Revision) über eine
Kante (Änderung) zu einer anderem Knoten kommt; aber da die Revisionen
linear sind, ist das nur eine lineare Liste und die Kanten sind implizit
alle bekannt (also r11 -> r12 -> r13 etc), d.h. man kann sich die
Graph-Idee getrost sparen.
Einen richtigen Graphen hätte man, wenn man sofort eine Liste aller
Revisionen bekäme, die eine bestimmte Branch betreffen (z.B. ein Log).
Das geht aber nur, wenn man svn log auf einen bestimmten _Pfad_ ansetzt.
>Nach einer Weile fragt man sich, ob IT von Informatikern oder vom
>Marketing oder gar von Ideologen betrieben wird
Wie gesagt, ich halte das Branch/Tag-Konzept von Subversion für einen
üblen Hack, den sie gemacht haben, um schnell genug die kritische Masse
an Usern zu generieren, die sie für Akzeptanz brauchten.
Für mich ist es auch kein Implementierungsdetail mehr: Subversion
unterstützt für mich weder echte Tags noch echte Branches sondern nur
CheapCopies innerhalb des Repositories, womit sich Tags und Branches
simulieren lassen.
Ein Tag ist zum Beispiel für mich nicht veränderbarer Inhalt sondern
logisch ein Pointer auf einen bestimmten Zustand. Das leistet subversion
nunmal nicht. Da kann ja gleich eine Textdatei ins Repository speichern
ala "Revision 100 ist Tag 'Release 1.0'" und dann nach dem gewünschten
Release gucken und die richtige Revision auschecken... :-/
bye, Rocco
--
:wq!
Mehr Informationen über die Mailingliste linux-l