;Franz} {von? /Horst}: distributed version control: Updates abrufen, wenn einer offline

hi,
ich habe mal eine Frage zu Versionskontrollsystemen - und zwar zu denen der Gattung Dezentrale Systeme (z.B. bei git, Bazaar, BitKeeper oder HG). Angenommen:
Anna (für eine Frauenquote ;-) ) und Bert sind die einzigen Teilhaber eines DVCS.
Anna und Bert haben die gleichen Ausgangsdateien im Arbeitsverzeichnis.
Im besagten Verzeichnis liegt die Datei C.txt.
C.txt hat den Inhalt "Hello world!".

Bert bearbeitet die Datei C.txt aus seinem Arbeitsverzeichnis - jetzt hat Sie den Inhalt "Hallo Welt und guten Abend/hello world and good evening!".
Bert schaltet den Computer aus bzw. ist nicht mehr online.
Anna checkt auf Änderungen aus.
Anna übernimmt alle Änderungen in ihr Arbeitsverzeichnis.
Anna öffnet C.txt aus ihrem Arbeitsverzeichnis.

Was wird Anna jetzt als Inhalt der Datei C.txt zu sehen bekommen?

Ich denke mir: Die Version von Bert ("Hallo Welt und guten Abend/hello world and good evening!") kann es wohl nicht sein. Bis jetzt hat ja nur Bert diese Version der Datei auf seinem Computer. Und jetzt ist Bert ja offline - also kann Anna ja nicht auf diese Version auf Berts Computer ("Hallo Welt und guten Abend/hello world and good evening!") zugreifen.
Dann müsste doch C.txt den Inhalt "Hello world!" (ursprüngliche Version) haben - oder liege ich da falsch?

lg Franz.

  1. Moin!

    Was wird Anna jetzt als Inhalt der Datei C.txt zu sehen bekommen?

    Ich denke mir: Die Version von Bert ("Hallo Welt und guten Abend/hello world and good evening!") kann es wohl nicht sein. Bis jetzt hat ja nur Bert diese Version der Datei auf seinem Computer. Und jetzt ist Bert ja offline - also kann Anna ja nicht auf diese Version auf Berts Computer ("Hallo Welt und guten Abend/hello world and good evening!") zugreifen.
    Dann müsste doch C.txt den Inhalt "Hello world!" (ursprüngliche Version) haben - oder liege ich da falsch?

    Du hast nicht gesagt, dass Bert seine Änderungen irgendwie dem DVCS bekannt macht. Also wird KEIN System, nicht mal ein zentrales, diese Änderungen kennen und verteilen können.

    Die Arbeitsweise ist eigentlich relativ simpel: Anna und Bert haben jeweils lokal ihr Repositorys. Sämtliche Updates und Commits geschehen immer gegenüber dieser lokalen Instanz. Der Austausch zwischen den einzelnen Repositorys ist ein separater Schritt, wobei es im Prinzip zwei Methoden gibt: Ziehen und Schieben. Anna könnte sich die Änderungen von Bert ziehen, oder Bert könnte die Änderungen zu Anna hinschieben, wenn er soweit ist.

    Egal wie die Änderungen von Bert zu Anna gelangt sind: Anna sieht dann Berts Änderungen in einem SEPARATEN Entwicklungszweig, d.h. ihre eigene Version ändert sich erstmal gar nicht. Erst wenn sie die Änderungen von Bert in ihren eigenen Zweig hineinzieht, sieht sie davon etwas. Oder wenn sie auf Berts Zweig umschaltet.

    Dieser grundsätzliche Unterschied zu zentralen Versionsverwaltungen ist der enorme Vorteil: Man kann lokal, ohne dass die Kollegen davon was mitbekommen müssen, in Zweigen einfach Features ausprobieren. Ebenso kann man jederzeit - also sehr häufig - Commits machen und die einzelnen Entwicklungsschritte so nachvollziehbar und umkehrbar halten, ohne dass man durch unfertige Software die Kollegen an der Arbeit hindert.

    - Sven Rautenberg

    1. hi,
      erstmal vielen Dank für die schnelle und hilfreiche Antwort.

      Du hast nicht gesagt, dass Bert seine Änderungen irgendwie dem DVCS bekannt macht. Also wird KEIN System, nicht mal ein zentrales, diese Änderungen kennen und verteilen können.

      Sorry, das habe ich wohl beim schreiben übersehen - dafür hab ich mir aber besonders schöne Namen für die beteiligten Personen ausgedacht ;-)

      [...]Der Austausch zwischen den einzelnen Repositorys ist ein separater Schritt, wobei es im Prinzip zwei Methoden gibt: Ziehen und Schieben. Anna könnte sich die Änderungen von Bert ziehen, oder Bert könnte die Änderungen zu Anna hinschieben, wenn er soweit ist.

      Hier setzt du aber vorraus, dass beide Teilnehmer (also Anna+Bert) online sind - oder hab ich da was falsch verstanden?

      Aber angenommen:
      Bert ändert C.txt & commited - zu diesem Zeitpunkt ist Anna noch offline.
      Bert geht offline.
      Anna geht nun erst online.
      Anna checkt auf Änderungen aus.
      Hat Anna da eine theoretische Chance, die neueste Version (die von Bert) von C.txt zu bekommen?

      lg Franz, der Horstige.

      1. Moin!

        Hier setzt du aber vorraus, dass beide Teilnehmer (also Anna+Bert) online sind - oder hab ich da was falsch verstanden?

        Aber angenommen:
        Bert ändert C.txt & commited - zu diesem Zeitpunkt ist Anna noch offline.
        Bert geht offline.
        Anna geht nun erst online.
        Anna checkt auf Änderungen aus.
        Hat Anna da eine theoretische Chance, die neueste Version (die von Bert) von C.txt zu bekommen?

        GIT funktioniert auch via EMail.

        Wenn die Repositorys auf einem gemeinsamen Fileserver liegen, gelingt der gegenseitige Zugriff ebenfalls.

        Und zu guter letzt hilft natürlich auch ein drittes Repository, auf das beide wechselseitig Zugriff nehmen könnten, wenn sie jeweils online sind.

        - Sven Rautenberg

        1. hi,

          Bert ändert C.txt & commited - zu diesem Zeitpunkt ist Anna noch offline.
          Bert geht offline.
          Anna geht nun erst online.
          Anna checkt auf Änderungen aus.
          Hat Anna da eine theoretische Chance, die neueste Version (die von Bert) von C.txt zu bekommen?
          GIT funktioniert auch via EMail.

          Interessant, muss ich mir mal genauer ansehen.
          Ist das als gute, aber außergewöhnliche Lösung anzusehen oder ist das eher der "unorthodoxe Weg"?

          Besten Dank für die Antwort bzw. die vielen Lösungsvorschläge.
          horstige franzgrüße.

          1. Hi!

            GIT funktioniert auch via EMail.
            Ist das als gute, aber außergewöhnliche Lösung anzusehen oder ist das eher der "unorthodoxe Weg"?

            Meines Wissens lässt sich sogar Linus Torvalds sämtliche Kernel-Patches per Mail von seinen Vertrauten schicken. "Unorthodox" ist es daher sicher nicht, aber ob's "gewöhnlich" ist, weiß ich nicht.

            Grüße
            Bernhard