Mercurial
Ein verteiltes Versionskontrollsystem
Markus Zapke-Gründemann
Ubucon 2010 Leipzig
Markus Zapke-Gründemann

Softwareentwickler seit 2001
Schwerpunkt: Web Application Development mit
Python und Django
Freier Softwareentwickler und Berater
seit 2008
www.keimlink.de
Übersicht

 Verteilte Versionskontrollsysteme
 Mercurial
 Arbeiten mit Mercurial
 Workflows
 Links
Wer benutzt ein zentrales
Versionskontrollsystem?
      (CVS, SVN)
Wer arbeitet mit einem
       verteilten
Versionskontrollsystem?
Wer hat noch nie ein
Versionskontrollsystem
       benutzt?
Verteilte
Versionskontrollsysteme

 Kein zentrales Repository nötig (aber möglich)
 Jeder Client hat ein eigenes Repository
 Viele Operationen sind schneller als bei einem zentralen
 Repository
 Führt zu anderen Entwicklungsmodellen
Mercurial
 Verteiltes Versionskontrollsystem
 Mercurial v0.1 im April 2005
 Fast vollständig in Python geschrieben
 Plattformunabhängig
 Erweiterbar (Extensions)
 Einfach zu erlernen
 Open Source (GNU GPL 2)
Mercurial (technisch)

 Version 0.1 unter 600 SLOC Python
 Version 1.6.4 hat 43.711 SLOC Python (71.666 total)
 Changesets/Patches
 SHA-1 Hashes
 Netzwerkzugriffe via HTTP oder SSH
Mercurial-Nutzer
 Adium         Mozilla
 Aptitude      NetBeans
 Dovecot       Python
 Gajim         RabbitMQ
 Google        Vim
 MoinMoin      Xen
hg
Mercurial einrichten


$ vim ~/.hgrc

$ cat ~/.hgrc
[ui]
username = Markus Zapke-Gründemann <info@keimlink.de>
Ein Repository einrichten
$ mkdir projekt

$ cd projekt

$ hg init

$ vim README

$ hg status
? README

$ hg add
adding README

$ hg st
A README

$ hg commit -m "Erster Commit."
Unterschiede feststellen
$ ls -A
.hg README

$ vim README

$ hg diff
diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,1 +1,3 @@
  Neues Projekt
+
+Zwei flinke Boxer jagen die quirlige Eva und…
Geschichte schreiben
$ hg st
M README

$ hg commit -m "Pangramm hinzugefügt."

$ hg log
changeset:   1:91987b4bd926
tag:         tip
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 12:28:26 2010 +0200
summary:     Pangramm hinzugefügt.

changeset:   0:3c1440dc196c
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 12:15:08 2010 +0200
summary:     Erster Commit.
Zeitreisen I
$ hg log
changeset:   3:70e6670ff187
tag:         tip
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 12:37:31 2010 +0200
summary:     Lorem ipsum.

changeset:   2:55069244c9a4
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 12:36:20 2010 +0200
summary:     Markup hinzugefügt.

changeset:   1:91987b4bd926
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 12:28:26 2010 +0200
summary:     Pangramm hinzugefügt.

changeset:   0:3c1440dc196c
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 12:15:08 2010 +0200
summary:     Erster Commit.
Zeitreisen II
$ hg identify
70e6670ff187 tip

$ hg identify -n
3

$ hg update -r 1
1 files updated, 0 files merged, 0 files removed, 0 files unresolved


$ hg identify -ni
91987b4bd926 1

$ hg up tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Zusammenfassung
$ hg init # Repository erstellen
$ hg status # Status des Repositories ausgeben
$ hg st # Alias für status
$ hg add # Dateien hinzufügen
$ hg diff # Unterschiede ausgeben
$ hg commit # Commit der hinzugefügten Dateien
$ hg log # Geschichte anzeigen
$ hg identify # Revision identifizieren
$ hg update -r REV # Zu einer Revision wechseln
$ hg up -r REV # Alias für update
Weitere wichtige Befehle
$ hg help # Hilfe ausgeben
$ hg help COMMAND # Hilfe zu einem Befehl anzeigen
$ hg copy SOURCE DEST # Eine Datei kopieren
$ hg cp SOURCE DEST # Alias für copy
$ hg remove FILE # Eine Datei löschen
$ hg rm FILE # Alias für remove
$ hg mv SOURCE DEST # Eine Datei verschieben
$ hg revert FILE # Eine Revision wieder herstellen
$ hg annotate FILE # Informationen zu jeder Zeile
HTTP-Server




$ hg serve
listening at http://host.local:8000/ (bound to *:8000)

$ hg clone http://host.local:8000/ projekt
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Separate Clones I

projekt $ cd ..

$ hg clone projekt projekt-clone
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

$ cd projekt-clone/

projekt-clone $ ls -A
.hg README

projekt-clone $ cat .hg/hgrc
[paths]
default = /Users/zappi/projekt
Separate Clones II

projekt-clone $ hg out
comparing with /Users/zappi/projekt
searching for changes
changeset:   4:7b61da41bfce
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:40:52 2010 +0200
summary:     Weitere Überschrift hinzugefügt.

changeset:   5:7678996dbc36
tag:         tip
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:41:24 2010 +0200
summary:     Markup für Überschrift hinzugefügt.
Separate Clones III

projekt-clone $ hg in
comparing with /Users/zappi/projekt
searching for changes
changeset:   4:4347c2e33c9e
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:46:24 2010 +0200
summary:     Text von Kafka eingefügt.

changeset:   5:876ee0430735
tag:         tip
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:47:02 2010 +0200
summary:     Überschrift hinzugefügt.
Separate Clones IV
projekt-clone $ hg pull
pulling from /Users/zappi/projekt
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)

projekt-clone $ hg heads
changeset:   7:876ee0430735
tag:         tip
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:47:02 2010 +0200
summary:     Überschrift hinzugefügt.

changeset:   5:7678996dbc36
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:41:24 2010 +0200
summary:     Markup für Überschrift hinzugefügt.
Separate Clones V
projekt-clone $   hg glog -r 4:
o changeset:      7:876ee0430735
| tag:            tip
| user:           Markus Zapke-Gründemann <info@keimlink.de>
| date:           Fri Oct 15 13:47:02 2010 +0200
| summary:        Überschrift hinzugefügt.
|
o changeset:      6:4347c2e33c9e
| parent:         3:70e6670ff187
| user:           Markus Zapke-Gründemann <info@keimlink.de>
| date:           Fri Oct 15 13:46:24 2010 +0200
| summary:        Text von Kafka eingefügt.
|
| @ changeset:     5:7678996dbc36
| | user:          Markus Zapke-Gründemann <info@keimlink.de>
| | date:          Fri Oct 15 13:41:24 2010 +0200
| | summary:       Markup für Überschrift hinzugefügt.
| |
| o changeset:     4:7b61da41bfce
|/   user:         Markus Zapke-Gründemann <info@keimlink.de>
|    date:         Fri Oct 15 13:40:52 2010 +0200
|    summary:      Weitere Überschrift hinzugefügt.
|
Separate Clones VI
projekt-clone $ cd ../projekt
projekt $ hg glog -r 3:
@ changeset:    5:876ee0430735
| tag:          tip
| user:         Markus Zapke-Gründemann <info@keimlink.de>
| date:         Fri Oct 15 13:47:02 2010 +0200
| summary:      Überschrift hinzugefügt.
|
o changeset:    4:4347c2e33c9e
| user:         Markus Zapke-Gründemann <info@keimlink.de>
| date:         Fri Oct 15 13:46:24 2010 +0200
| summary:      Text von Kafka eingefügt.
|
o changeset:    3:70e6670ff187
| user:         Markus Zapke-Gründemann <info@keimlink.de>
| date:         Fri Oct 15 13:37:31 2010 +0200
| summary:      Lorem ipsum.
|
Separate Clones VII
projekt $ cd ../projekt-clone
projekt-clone $ hg merge
merging README
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)

projekt-clone $ hg commit -m "Merge mit Eltern-Klon."

projekt-clone $ hg heads
changeset:   8:7f6e7b845983
tag:         tip
parent:      5:7678996dbc36
parent:      7:876ee0430735
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 14:10:32 2010 +0200
summary:     Merge mit Eltern-Klon.
Separate Clones VIII
projekt-clone $ hg glog -r 4:
@    changeset:   8:7f6e7b845983
|   tag:         tip
| | parent:       5:7678996dbc36
| | parent:       7:876ee0430735
| | user:         Markus Zapke-Gründemann <info@keimlink.de>
| | date:         Fri Oct 15 14:10:32 2010 +0200
| | summary:      Merge mit Eltern-Klon.
| |
| o changeset:    7:876ee0430735
| | user:         Markus Zapke-Gründemann <info@keimlink.de>
| | date:         Fri Oct 15 13:47:02 2010 +0200
| | summary:      Überschrift hinzugefügt.
| |
| o changeset:    6:4347c2e33c9e
| | parent:       3:70e6670ff187
| | user:         Markus Zapke-Gründemann <info@keimlink.de>
| | date:         Fri Oct 15 13:46:24 2010 +0200
| | summary:      Text von Kafka eingefügt.
| |
o | changeset:    5:7678996dbc36
| | user:         Markus Zapke-Gründemann <info@keimlink.de>
| | date:         Fri Oct 15 13:41:24 2010 +0200
| | summary:      Markup für Überschrift hinzugefügt.
| |
o | changeset:    4:7b61da41bfce
|/   user:        Markus Zapke-Gründemann <info@keimlink.de>
|    date:        Fri Oct 15 13:40:52 2010 +0200
|    summary:     Weitere Überschrift hinzugefügt.
|
Separate Clones IX
projekt-clone $ hg out
comparing with /Users/zappi/projekt
searching for changes
changeset:   4:7b61da41bfce
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:40:52 2010 +0200
summary:     Weitere Überschrift hinzugefügt.

changeset:   5:7678996dbc36
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 13:41:24 2010 +0200
summary:     Markup für Überschrift hinzugefügt.

changeset:   8:7f6e7b845983
tag:         tip
parent:      5:7678996dbc36
parent:      7:876ee0430735
user:        Markus Zapke-Gründemann <info@keimlink.de>
date:        Fri Oct 15 14:10:32 2010 +0200
summary:     Merge mit Eltern-Klon.
Separate Clones X

projekt-clone $ hg push
pushing to /Users/zappi/projekt
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 1 files

projekt-clone $ cd ../projekt
Separate Clones XI
projekt $ hg glog   -r 4:
o    changeset:     8:7f6e7b845983
|   tag:           tip
| | parent:         7:7678996dbc36
| | parent:         5:876ee0430735
| | user:           Markus Zapke-Gründemann <info@keimlink.de>
| | date:           Fri Oct 15 14:10:32 2010 +0200
| | summary:        Merge mit Eltern-Klon.
| |
| o changeset:      7:7678996dbc36
| | user:           Markus Zapke-Gründemann <info@keimlink.de>
| | date:           Fri Oct 15 13:41:24 2010 +0200
| | summary:        Markup für Überschrift hinzugefügt.
| |
| o changeset:      6:7b61da41bfce
| | parent:         3:70e6670ff187
| | user:           Markus Zapke-Gründemann <info@keimlink.de>
| | date:           Fri Oct 15 13:40:52 2010 +0200
| | summary:        Weitere Überschrift hinzugefügt.
| |
@ | changeset:      5:876ee0430735
| | user:           Markus Zapke-Gründemann <info@keimlink.de>
| | date:           Fri Oct 15 13:47:02 2010 +0200
| | summary:        Überschrift hinzugefügt.
| |
o | changeset:      4:4347c2e33c9e
|/   user:          Markus Zapke-Gründemann <info@keimlink.de>
|    date:          Fri Oct 15 13:46:24 2010 +0200
|    summary:       Text von Kafka eingefügt.
|
Separate Clones XII


projekt $ hg identify -ni
876ee0430735 5

$ hg up
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

$ hg identify -ni
7f6e7b845983 8
Zusammenfassung
$ hg serve # Webserver starten
$ hg clone # Repository klonen
$ hg out # Changesets ausgeben, die zum Eltern-Klon gehen
$ hg in # Changesets ausgeben, die vom Eltern-Klon kommen
$ hg pull # Changesets vom Eltern-Klon holen
$ hg heads # Köpfe anzeigen
$ hg glog # Geschichte als Baum (graphlog Extension)
$ hg merge # Zwei Revisionen zusammenführen
$ hg push # Changesets zum Eltern-Klon senden
graphlog Extension

$ vim ~/.hgrc

$ cat ~/.hgrc
[ui]
username = Markus Zapke-Gründemann <info@keimlink.de>

[extensions]
graphlog =
Mercurial Workflows I

 Mit „named branches“ arbeiten
   branch / update / merge / commit
 Tags nutzen
   tag / tags
Mercurial Workflows II
 Code ohne zentrales Repository austauschen
   export / import
   bundle / unbundle
   clone / push / pull
 History manipulieren
   backout
   clone / export / import
Links

 http://mercurial.selenic.com/
 http://hgbook.red-bean.com/
 http://hginit.com/
 http://mercurial.selenic.com/wiki/
 QuickReferenceCardsAndCheatSheets
 http://bitbucket.org/
Lizenz
              Dieses Werk ist unter einem
                  Creative Commons
Namensnennung-Weitergabe unter gleichen Bedingungen
              3.0 Unported Lizenzvertrag
                       lizenziert.
     Um die Lizenz anzusehen, gehen Sie bitte zu
   http://creativecommons.org/licenses/by-sa/3.0/
            oder schicken Sie einen Brief an
                  Creative Commons,
             171 Second Street, Suite 300,
        San Francisco, California 94105, USA.

Mercurial

  • 1.
    Mercurial Ein verteiltes Versionskontrollsystem MarkusZapke-Gründemann Ubucon 2010 Leipzig
  • 2.
    Markus Zapke-Gründemann Softwareentwickler seit2001 Schwerpunkt: Web Application Development mit Python und Django Freier Softwareentwickler und Berater seit 2008 www.keimlink.de
  • 3.
    Übersicht Verteilte Versionskontrollsysteme Mercurial Arbeiten mit Mercurial Workflows Links
  • 4.
    Wer benutzt einzentrales Versionskontrollsystem? (CVS, SVN)
  • 5.
    Wer arbeitet miteinem verteilten Versionskontrollsystem?
  • 6.
    Wer hat nochnie ein Versionskontrollsystem benutzt?
  • 7.
    Verteilte Versionskontrollsysteme Kein zentralesRepository nötig (aber möglich) Jeder Client hat ein eigenes Repository Viele Operationen sind schneller als bei einem zentralen Repository Führt zu anderen Entwicklungsmodellen
  • 8.
    Mercurial Verteiltes Versionskontrollsystem Mercurial v0.1 im April 2005 Fast vollständig in Python geschrieben Plattformunabhängig Erweiterbar (Extensions) Einfach zu erlernen Open Source (GNU GPL 2)
  • 9.
    Mercurial (technisch) Version0.1 unter 600 SLOC Python Version 1.6.4 hat 43.711 SLOC Python (71.666 total) Changesets/Patches SHA-1 Hashes Netzwerkzugriffe via HTTP oder SSH
  • 10.
    Mercurial-Nutzer Adium Mozilla Aptitude NetBeans Dovecot Python Gajim RabbitMQ Google Vim MoinMoin Xen
  • 11.
  • 12.
    Mercurial einrichten $ vim~/.hgrc $ cat ~/.hgrc [ui] username = Markus Zapke-Gründemann <info@keimlink.de>
  • 13.
    Ein Repository einrichten $mkdir projekt $ cd projekt $ hg init $ vim README $ hg status ? README $ hg add adding README $ hg st A README $ hg commit -m "Erster Commit."
  • 14.
    Unterschiede feststellen $ ls-A .hg README $ vim README $ hg diff diff --git a/README b/README --- a/README +++ b/README @@ -1,1 +1,3 @@ Neues Projekt + +Zwei flinke Boxer jagen die quirlige Eva und…
  • 15.
    Geschichte schreiben $ hgst M README $ hg commit -m "Pangramm hinzugefügt." $ hg log changeset: 1:91987b4bd926 tag: tip user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 12:28:26 2010 +0200 summary: Pangramm hinzugefügt. changeset: 0:3c1440dc196c user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 12:15:08 2010 +0200 summary: Erster Commit.
  • 16.
    Zeitreisen I $ hglog changeset: 3:70e6670ff187 tag: tip user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 12:37:31 2010 +0200 summary: Lorem ipsum. changeset: 2:55069244c9a4 user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 12:36:20 2010 +0200 summary: Markup hinzugefügt. changeset: 1:91987b4bd926 user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 12:28:26 2010 +0200 summary: Pangramm hinzugefügt. changeset: 0:3c1440dc196c user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 12:15:08 2010 +0200 summary: Erster Commit.
  • 17.
    Zeitreisen II $ hgidentify 70e6670ff187 tip $ hg identify -n 3 $ hg update -r 1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg identify -ni 91987b4bd926 1 $ hg up tip 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  • 18.
    Zusammenfassung $ hg init# Repository erstellen $ hg status # Status des Repositories ausgeben $ hg st # Alias für status $ hg add # Dateien hinzufügen $ hg diff # Unterschiede ausgeben $ hg commit # Commit der hinzugefügten Dateien $ hg log # Geschichte anzeigen $ hg identify # Revision identifizieren $ hg update -r REV # Zu einer Revision wechseln $ hg up -r REV # Alias für update
  • 19.
    Weitere wichtige Befehle $hg help # Hilfe ausgeben $ hg help COMMAND # Hilfe zu einem Befehl anzeigen $ hg copy SOURCE DEST # Eine Datei kopieren $ hg cp SOURCE DEST # Alias für copy $ hg remove FILE # Eine Datei löschen $ hg rm FILE # Alias für remove $ hg mv SOURCE DEST # Eine Datei verschieben $ hg revert FILE # Eine Revision wieder herstellen $ hg annotate FILE # Informationen zu jeder Zeile
  • 20.
    HTTP-Server $ hg serve listeningat http://host.local:8000/ (bound to *:8000) $ hg clone http://host.local:8000/ projekt updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  • 21.
    Separate Clones I projekt$ cd .. $ hg clone projekt projekt-clone updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd projekt-clone/ projekt-clone $ ls -A .hg README projekt-clone $ cat .hg/hgrc [paths] default = /Users/zappi/projekt
  • 22.
    Separate Clones II projekt-clone$ hg out comparing with /Users/zappi/projekt searching for changes changeset: 4:7b61da41bfce user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:40:52 2010 +0200 summary: Weitere Überschrift hinzugefügt. changeset: 5:7678996dbc36 tag: tip user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:41:24 2010 +0200 summary: Markup für Überschrift hinzugefügt.
  • 23.
    Separate Clones III projekt-clone$ hg in comparing with /Users/zappi/projekt searching for changes changeset: 4:4347c2e33c9e user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:46:24 2010 +0200 summary: Text von Kafka eingefügt. changeset: 5:876ee0430735 tag: tip user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:47:02 2010 +0200 summary: Überschrift hinzugefügt.
  • 24.
    Separate Clones IV projekt-clone$ hg pull pulling from /Users/zappi/projekt searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge) projekt-clone $ hg heads changeset: 7:876ee0430735 tag: tip user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:47:02 2010 +0200 summary: Überschrift hinzugefügt. changeset: 5:7678996dbc36 user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:41:24 2010 +0200 summary: Markup für Überschrift hinzugefügt.
  • 25.
    Separate Clones V projekt-clone$ hg glog -r 4: o changeset: 7:876ee0430735 | tag: tip | user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:47:02 2010 +0200 | summary: Überschrift hinzugefügt. | o changeset: 6:4347c2e33c9e | parent: 3:70e6670ff187 | user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:46:24 2010 +0200 | summary: Text von Kafka eingefügt. | | @ changeset: 5:7678996dbc36 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 13:41:24 2010 +0200 | | summary: Markup für Überschrift hinzugefügt. | | | o changeset: 4:7b61da41bfce |/ user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:40:52 2010 +0200 | summary: Weitere Überschrift hinzugefügt. |
  • 26.
    Separate Clones VI projekt-clone$ cd ../projekt projekt $ hg glog -r 3: @ changeset: 5:876ee0430735 | tag: tip | user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:47:02 2010 +0200 | summary: Überschrift hinzugefügt. | o changeset: 4:4347c2e33c9e | user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:46:24 2010 +0200 | summary: Text von Kafka eingefügt. | o changeset: 3:70e6670ff187 | user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:37:31 2010 +0200 | summary: Lorem ipsum. |
  • 27.
    Separate Clones VII projekt$ cd ../projekt-clone projekt-clone $ hg merge merging README 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) projekt-clone $ hg commit -m "Merge mit Eltern-Klon." projekt-clone $ hg heads changeset: 8:7f6e7b845983 tag: tip parent: 5:7678996dbc36 parent: 7:876ee0430735 user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 14:10:32 2010 +0200 summary: Merge mit Eltern-Klon.
  • 28.
    Separate Clones VIII projekt-clone$ hg glog -r 4: @ changeset: 8:7f6e7b845983 | tag: tip | | parent: 5:7678996dbc36 | | parent: 7:876ee0430735 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 14:10:32 2010 +0200 | | summary: Merge mit Eltern-Klon. | | | o changeset: 7:876ee0430735 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 13:47:02 2010 +0200 | | summary: Überschrift hinzugefügt. | | | o changeset: 6:4347c2e33c9e | | parent: 3:70e6670ff187 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 13:46:24 2010 +0200 | | summary: Text von Kafka eingefügt. | | o | changeset: 5:7678996dbc36 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 13:41:24 2010 +0200 | | summary: Markup für Überschrift hinzugefügt. | | o | changeset: 4:7b61da41bfce |/ user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:40:52 2010 +0200 | summary: Weitere Überschrift hinzugefügt. |
  • 29.
    Separate Clones IX projekt-clone$ hg out comparing with /Users/zappi/projekt searching for changes changeset: 4:7b61da41bfce user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:40:52 2010 +0200 summary: Weitere Überschrift hinzugefügt. changeset: 5:7678996dbc36 user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 13:41:24 2010 +0200 summary: Markup für Überschrift hinzugefügt. changeset: 8:7f6e7b845983 tag: tip parent: 5:7678996dbc36 parent: 7:876ee0430735 user: Markus Zapke-Gründemann <info@keimlink.de> date: Fri Oct 15 14:10:32 2010 +0200 summary: Merge mit Eltern-Klon.
  • 30.
    Separate Clones X projekt-clone$ hg push pushing to /Users/zappi/projekt searching for changes adding changesets adding manifests adding file changes added 3 changesets with 3 changes to 1 files projekt-clone $ cd ../projekt
  • 31.
    Separate Clones XI projekt$ hg glog -r 4: o changeset: 8:7f6e7b845983 | tag: tip | | parent: 7:7678996dbc36 | | parent: 5:876ee0430735 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 14:10:32 2010 +0200 | | summary: Merge mit Eltern-Klon. | | | o changeset: 7:7678996dbc36 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 13:41:24 2010 +0200 | | summary: Markup für Überschrift hinzugefügt. | | | o changeset: 6:7b61da41bfce | | parent: 3:70e6670ff187 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 13:40:52 2010 +0200 | | summary: Weitere Überschrift hinzugefügt. | | @ | changeset: 5:876ee0430735 | | user: Markus Zapke-Gründemann <info@keimlink.de> | | date: Fri Oct 15 13:47:02 2010 +0200 | | summary: Überschrift hinzugefügt. | | o | changeset: 4:4347c2e33c9e |/ user: Markus Zapke-Gründemann <info@keimlink.de> | date: Fri Oct 15 13:46:24 2010 +0200 | summary: Text von Kafka eingefügt. |
  • 32.
    Separate Clones XII projekt$ hg identify -ni 876ee0430735 5 $ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg identify -ni 7f6e7b845983 8
  • 33.
    Zusammenfassung $ hg serve# Webserver starten $ hg clone # Repository klonen $ hg out # Changesets ausgeben, die zum Eltern-Klon gehen $ hg in # Changesets ausgeben, die vom Eltern-Klon kommen $ hg pull # Changesets vom Eltern-Klon holen $ hg heads # Köpfe anzeigen $ hg glog # Geschichte als Baum (graphlog Extension) $ hg merge # Zwei Revisionen zusammenführen $ hg push # Changesets zum Eltern-Klon senden
  • 34.
    graphlog Extension $ vim~/.hgrc $ cat ~/.hgrc [ui] username = Markus Zapke-Gründemann <info@keimlink.de> [extensions] graphlog =
  • 35.
    Mercurial Workflows I Mit „named branches“ arbeiten branch / update / merge / commit Tags nutzen tag / tags
  • 36.
    Mercurial Workflows II Code ohne zentrales Repository austauschen export / import bundle / unbundle clone / push / pull History manipulieren backout clone / export / import
  • 37.
    Links http://mercurial.selenic.com/ http://hgbook.red-bean.com/ http://hginit.com/ http://mercurial.selenic.com/wiki/ QuickReferenceCardsAndCheatSheets http://bitbucket.org/
  • 38.
    Lizenz Dieses Werk ist unter einem Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenzvertrag lizenziert. Um die Lizenz anzusehen, gehen Sie bitte zu http://creativecommons.org/licenses/by-sa/3.0/ oder schicken Sie einen Brief an Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.