[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