[linux-l] Re: VCS
Volker Grabsch
vog at notjusthosting.com
Di Apr 11 00:27:11 CEST 2006
On Mon, Apr 10, 2006 at 03:04:26PM +0200, Rocco Rutte wrote:
> Also
> nicht einfach diff(1) aufrufen weil beide Trees zum Beispiel foo.c
> hinzugefügt haben könnten, die nichts miteinander zu tun haben (das ist
> ja ein Konflikt) (also ein diff, dass die bisherige History aller
> Objekte berücksichtigt).
Das, was du hier beschreibst, ist ein triple-diff (bzw. später ein
triple-merge). Diese Techniken sind in allen VCS gang und gäbe, und
haben per se erstmal nichts mit Branches zu tun.
(obwohl sie für Branches natürlich exzessiv eingesetzt werden)
Diese Dinge existieren aber auch außerdem der VCS als ganz normale
Unix tools, siehe auch:
man diff3
man mergechanges
> Vielleicht habe ich ja verteilte VCS nicht wirklich verstanden. Können
> die da in beiden Repositories den gemeinsamen Ursprung erkennen?
Natürlich! Was du beschrieben hast, passiert auch ohne Branches in
jedem VCS "tagtäglich". Beispiel:
In der aktuellen Version befindet sich eine Datei foo.c
* Anton macht einen Checkout.
* Berta macht einen Checkout.
* Anton bearbeitet die Funktion foo_a() in der foo.c
* Berta bearbeitet die Funktion foo_b() in der foo.c
* Anton macht einen Commit.
So. Jetzt hat Berta eine alte Version der foo_b(). Aber das stört
natürlich keinen.
Wenn jetzt Berta ihre Änderungen einspielt (je nach VCS sieht das etwas
anders aus), dann werden ihre Änderungen an der foo.c in die aktuelle
foo.c eingetragen, die schon Antons Änderungen enthält. Das heißt, die
foo.c wird nicht einfach überschrieben (dann wären Antons Änderungen
weg), sondern es geschieht ein klassischer "merge":
Gemeinsamer Ursprung: die alte foo.c
Änderung 1: in der foo_a()
Ändernug 2: in der foo_b()
Also genau das, was du beschrieben hast. Gemeinsames Datei-Anlegen
passiert so ähnlich, man stellt es sich am besten als Änderung in
der "Verzeichnis-Datei" vor, in der alle Dateinamen aufgelistet sind.
(wie das tatsächlich gehandhabt wird, hängt vom VCS ab)
Viele Grüße,
Volker
--
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR
Mehr Informationen über die Mailingliste linux-l