#language de == Tutorial - Die Vorgeschichte ("History") eines Repositorys erkunden == Wir sind den Anweisungen in GermanTutorialClone gefolgt und haben ein [[Repository]] geklont; unsere lokale Kopie heißt {{{my-hello}}}. Werfen wir einen Blick auf die History dieses Repository. Dazu verwenden wir den {{{log}}}-Befehl. Der zeigt eine Zusammenfassung aller Ereignisse an, die in dem [[Repository]] stattgefunden haben, zuerst das jüngste und dann rückwärts durch die Geschichte zu immer älteren Ereignissen. {{{ $ cd my-hello $ hg log changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile changeset: 0:0a04b987be5a user: mpm@selenic.com date: Fri Aug 26 01:20:50 2005 -0700 summary: Create a standard "hello, world" program }}} Die ausgegebenen Zeilen erfordern eine Erklärung. * Jeder Absatz beschreibt einen einzelnen ChangeSet. Ein ChangeSet ist die Änderung einer oder mehrer Dateien, zusammengefasst zu einer logischen Einheit. * In unserem Fall besteht die History des [[Repository]]s aus zwei [[ChangeSet]]s. * {{{changeset}}} ist die eindeutige Bezeichnung eines ChangeSet. * Die Zahl vor dem Doppelpunkt ist eine RevisionNumber, eine lokale Abkürzung für den ChangeSet. Sie gilt nur innerhalb dieses [[Repository]]s. * Die lange Hexadezimalzahl hinter dem Doppelpunkt ist die ChangeSetID; sie stellt eine eindeutige Bezeichnung des [ChangeSet]s dar und ist gleich in allen Repositories, die diesen ChangeSet enthalten. Wenn Sie mit jemandem über einen ChangeSet diskutieren wollen, benutzen Sie die ChangeSetID, nicht die RevisionNumber. * {{{tag}}} ist ein [[Tag]], ein frei gewählter Name für einen ChangeSet. * Sie können jedem beliebigen ChangeSet eien oder mehrere [[Tag]]s zuweisen. In der Praxis besitzen nicht viele [[ChangeSet]]s [[Tag]]s, somit ist die {{{tag}}}-Zeile selten vorhanden. * Ein besonderes [[Tag]] namens {{{tip}}} markiert immer den [[Tip]] (für "Spitze"), also den jüngsten ChangeSet im [[Repository]]. Wenn wir einen weiteren ChangeSet erzeugen (was wir bald tun werden), wird dieser der neue [[Tip]]. * {{{user}}} (Benutzer) bezeichnet die Person, die den ChangeSet erzeugt hat. Das ist eine frei formatierbare Zeichenkette, die gewönlich eine Emailadresse enthält, manchmal auch einen Namen. * {{{date}}} (Datum) zeigt an, wann der ChangeSet erzeugt wurde. Diese Daten werden in der Zeitzone des Erzeugers des [ChangeSet]s angezeigt. * {{{summary}}} (Zusammenfassung) zeigt die erste Zeile der Beschreibung des [ChangeSet]s. Sie wurde vom Erzeuger des [ChangeSet]s eingegeben, als er diesen erzeugt hat. Er soll helfen, den Zweck des [ChangeSet]s zu verstehen. * {{{parent}}} bezeichnet die Eltern-[[ChangeSet]]s, falls es davon mehr als einen gibt; das kommt vor, wenn Sie Änderungen aus mehreren Repositorys zusammenführen ("merge"). * Meist gibt es nur einen Eltern-[[ChangeSet]], nämlich den nächstälteren. So is es auch in unserem obigen Beispiel. Wir können detailiertere Informationen über die History erhalten, indem die {{{-v}}}-Option - für "verbose", ausführlich - wählen oder die {{{--debug}}}-Option die alle nur denkbaren Angaben liefert: {{{ $ hg log -v changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files: Makefile description: Create a makefile (...) $ hg log --debug manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600 changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9 parent: -1:0000000000000000000000000000000000000000 user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files+: Makefile description: Create a makefile (...) }}} Die ausführliche Ausgabe enthält einige Felder zusätzlich. * {{{changeset}}} liefert jetzt die ungekürzte ChangeSetID. * {{{files}}} listet die in diesem ChangeSet geänderten Dateien auf. * {{{description}}} enthält die volständige mehrzeilige Beschreibung des [ChangeSet]s, nicht nur die erste Zeile. * In unserem Beispiel besteht kein Unterschied, da die Beschreibungen nur eine Zeile umfassen. Die --debug-Ausgabe gibt folgende Felder zusätzlich aus: * {{{file+}}} Listet die in diesem ChangeSet hinzugefügten Dateien. * {{{file-}}} Listet die in diesem ChangeSet gelöschten Dateien. * {{{manifest}}} liefert die [[Manifest]] ID für den ChangeSet. * Zwei {{{parent}}}-Felder geben die Changeset-ID beider Eltern für diesen Changeset, wobei {{{-1:0000000000000000000000000000000000000000}}} einen nicht vorhandenen parent bezeichnet. Der {{{log}}}-Befehl besitzt eine Option {{{-r}}}, mit der man ausgewählte Changesets ansehen kann. {{{ $ hg log -r1 changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile }}} Die {{{-r}}}-Option stellt eine sehr flexible Syntax zur Auswahl von Changesets oder Changeset-Folgen bereit. In unserem Besipielrepository haben wir leider zu wenig Changesets, um das gut demonstrieren zu können. Bitte entnehmen Sie weitere Informationen der [[http://www.selenic.com/mercurial/hg.1.html|Manpage]] von Mercurial. Der {{{log}}}-Befehlc besitzt eine {{{-p}}}-Option, um alle mit den Changesets assoziierten Patches anzuzeigen: {{{ $ hg log -r1 -p changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile diff -r 0a04b987be5a -r 82e55d328c8c Makefile --- /dev/null Fri Aug 26 01:20:50 2005 -0700 +++ b/Makefile Fri Aug 26 01:21:28 2005 -0700 @@ -0,0 +1,1 @@ +all: hello }}} Wir können auch den Befehl {{{tip}}} verwenden, um Infos über den ''tip'', also den jüngsten Changeset anzuzeigen. Das {{{tip}}}-Kommando ist also eine Abkürzung für {{{log -r tip}}}. {{{ $ hg tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile $ hg log -r tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile }}} Da wir jetzt eine ungefähre Vorstellung haben, was bisher geschehen ist, lassen Sie uns einen Sprung machen und einige Änderungen durchführen! Auf geht's zum GermanTutorialFirstChange! ---- CategoryGerman