Versionsverwaltung? Real Programmers don't need version control. N.N.
Geschichte SCCS (1970er, Dateien, Sperren, nicht frei) RCS  (1980er, Dateien, Sperren, frei) CVS  (1985-, Dateien, keine Sperren, frei) Subversion (SVN) (2001-, frei) Git (2005-, frei) Mercurial (2005-, frei) andere : clearcase, perforce, bitkeeper ($$$$)
Installation Windows: TortoiseHg-0.x.y.exe http://tortoisehg.sourceforge.net/ alles drin Linux/Unix/MacOS X: mercurial-1.0.2.tar.gz http://www.selenic.com/mercurial man braucht Python >=2.3, 3-way merge, gcc Konfigurieren (Name, E-Mail, ...) auf Rechner oder im Repository
Kommandozeile D:\src\hgtalk>hg version Mercurial Distributed SCM (version 1.0.2+tortoisehg) ... D:\src\hgtalk>hg help init hg init [-e CMD] [--remotecmd CMD] [DEST] create a new repository in the given directory ... D:\src\hgtalk>
hg init D:\src\hgtalk>mkdir 1 D:\src\hgtalk>cd 1 D:\src\hgtalk\1>hg init oder D:\src\hgtalk>hg init 1 D:\src\hgtalk>cd 1
Leerer Arbeitsbereich D:\src\hgtalk\1>dir 12.10.2008  21:57  <DIR>  . 12.10.2008  21:57  <DIR>  .. 12.10.2008  21:57  <DIR>  .hg 0 Datei(en), 0 Bytes 3 Verzeichnis(se), 80.418.877.440 Bytes frei
TortoiseHG Kontextmenü im Explorer
Repository erzeugen (.hg-Verz.)
entspricht „hg init“
.hgignore ist leer (später mehr)
hg status  (kurz st) D:\src\hgtalk\1>hg st ? .hgignore ? info1.pl D:\src\hgtalk\1>
jetzt unter Windows ...
... hg status
erstmal sieht man nichts ...
... Status unbekannt anwählen
.hgignore blendet Dateimuster aus
die ignorierten Dateien sind weg D:\src\hgtalk\1>hg status ? info1.pl D:\src\hgtalk\1>
die ignorierten Dateien sind weg D:\src\hgtalk\1>hg status ? info1.pl D:\src\hgtalk\1>dir 12.10.2008  18:54  <DIR>  .hg 12.10.2008  20:48  111 .hgignore 12.10.2008  18:54  0 .hgignore.$$$ 12.10.2008  19:14  90 info1.pl D:\src\hgtalk\1>
unter Windows genauso ...
... oder auch die ignorierten
Dateien hinzufügen D:\src\hgtalk\1>hg add info1.pl D:\src\hgtalk\1>hg st A info1.pl D:\src\hgtalk\1>hg commit D:\src\hgtalk\1>hg st D:\src\hgtalk\1> Achtung: hg add ohne Parameter nimmt alle Dateien rekursiv. Öffnet Editor für Kommentar
Status im Explorer
Änderungen D:\src\hgtalk\1>type info1.pl use strict; print &quot;Hg steht für: Mercurial\n&quot;; D:\src\hgtalk\1>hg st M info1.pl D:\src\hgtalk\1>
Status „geändert“ im Explorer Neue und ignorierte Dateien ohne Symbol
noch jemand will arbeiten D:\src\hgtalk>hg clone 1 1b updating working directory 1 files updated, 0 files merged, 0 files removed, 0 files unresolved D:\src\hgtalk>cd 1b D:\src\hgtalk\1b>type info1.pl use strict; print &quot;Hg steht für: hydrargyrum, chemisches Symbol für Quecksilber\n&quot;; D:\src\hgtalk\1b>
... und ändert, ... D:\src\hgtalk\1b>copy ..\1\.hgignore . D:\src\hgtalk\1b>hg diff diff -r 134e009f9517 info1.pl --- a/info1.pl  Sun Oct 12 23:14:23 2008 +0200 +++ b/info1.pl  Sun Oct 12 23:43:29 2008 +0200 @@ -1,4 +1,5 @@ use strict; print &quot;Hg steht für: hydrargyrum, chemisches Symbol für Quecksilber\n&quot;; +print &quot;  oder auch für Hochschulgesetz\n&quot;; D:\src\hgtalk\1b>hg commit D:\src\hgtalk\1b>
... es sieht gut aus D:\src\hgtalk\1b>hg st D:\src\hgtalk\1b>hg log changeset:  1:4e94b6009d08 tag:  tip user:  Wieland date:  Sun Oct 12 23:45:13 2008 +0200 summary:  gesetz changeset:  0:134e009f9517 user:  Wieland date:  Sun Oct 12 23:14:23 2008 +0200 summary:  start D:\src\hgtalk\1b>
In 1 merken wir nichts, ... D:\src\hgtalk\1>hg diff diff -r 134e009f9517 info1.pl --- a/info1.pl  Sun Oct 12 23:14:23 2008 +0200 +++ b/info1.pl  Sun Oct 12 23:47:16 2008 +0200 @@ -1,4 +1,4 @@ use strict; -print &quot;Hg steht für: hydrargyrum, chemisches Symbol für Quecksilber\n&quot;; +print &quot;Hg steht für: Mercurial\n&quot;; D:\src\hgtalk\1>
... auch nicht beim einchecken D:\src\hgtalk\1>hg ci -m &quot;hg4hg&quot; D:\src\hgtalk\1>hg log changeset:  1:69fb82b0a16f tag:  tip user:  Wieland date:  Mon Oct 13 01:22:14 2008 +0200 summary:  hg4hg changeset:  0:134e009f9517 user:  Wieland date:  Sun Oct 12 23:14:23 2008 +0200 summary:  start D:\src\hgtalk\1> Öffnet nicht Editor für Kommentar
gleicher Anfang, anders weiter 1: 1b: v0 v0 v1 v1'
was hat 1b geändert? D:\src\hgtalk\1>hg incoming ..\1b comparing with ..\1b searching for changes changeset:  1:4e94b6009d08 tag:  tip user:  Wieland date:  Sun Oct 12 23:45:13 2008 +0200 summary:  gesetz D:\src\hgtalk\1>
wenn 1b noch geändert hat? D:\src\hgtalk\1>hg incoming ..\1b comparing with ..\1b searching for changes changeset:  1:4e94b6009d08 user:  Wieland date:  Sun Oct 12 23:45:13 2008 +0200 summary:  gesetz changeset:  2:3ceb703f893d tag:  tip user:  Wieland date:  Mon Oct 13 01:34:23 2008 +0200 summary:  !!!
was genau hat 1b geändert? D:\src\hgtalk\1>hg incoming  -p ..\1b comparing with ..\1b searching for changes changeset:  1:4e94b6009d08 ... diff -r 134e009f9517 -r 4e94b6009d08 info1.pl --- a/info1.pl  Sun Oct 12 23:14:23 2008 +0200 +++ b/info1.pl  Sun Oct 12 23:45:13 2008 +0200 @@ -1,4 +1,5 @@ ... changeset:  2:3ceb703f893d tag:  tip ...
gleicher Anfang, anders weiter 1: 1b: v0 v0 v1 v1' v2'
von 1b holen D:\src\hgtalk\1>hg pull ..\1b pulling from ..\1b 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) D:\src\hgtalk\1>
gleicher Anfang, anders weiter 1: 1b: v0 v0 v1 v1' v2' v3 tip heads tip head gleich verschieden Rep. wd
viele Köpfe D:\src\hgtalk\1>hg heads changeset:  3:3ceb703f893d tag:  tip user:  Wieland date:  Mon Oct 13 01:34:23 2008 +0200 summary:  !!! changeset:  1:69fb82b0a16f user:  Wieland date:  Mon Oct 13 01:22:14 2008 +0200 summary:  hg4hg D:\src\hgtalk\1>
Konflikte lösen (hg merge)
... im wd gelöst v0 v1 v2' v3
Knoten automatisch aufgelöst 1: 1b: v0 v0 v1 v1' v2' v3 tip heads tip head gleich verschieden Rep. wd
Ergebnis des Lösens D:\src\hgtalk\1>hg diff diff -r 69fb82b0a16f info1.pl --- a/info1.pl  Mon Oct 13 01:22:14 2008 +0200 +++ b/info1.pl  Mon Oct 13 10:14:11 2008 +0200 @@ -1,4 +1,5 @@ use strict; print &quot;Hg steht für: Mercurial\n&quot;; +print &quot;  oder auch für Hochschulgesetz !!!\n&quot;; D:\src\hgtalk\1>
Ergebnis speichern D:\src\hgtalk\1>hg commit D:\src\hgtalk\1>hg st D:\src\hgtalk\1>hg log changeset:  4:024fdf725d5d tag:  tip parent:  1:69fb82b0a16f parent:  3:3ceb703f893d user:  Wieland date:  Mon Oct 13 10:15:38 2008 +0200 summary:  beide Versionen zusammen ... D:\src\hgtalk\1>
hg tip D:\src\hgtalk\1>hg log -r4 changeset:  4:024fdf725d5d tag:  tip parent:  1:69fb82b0a16f parent:  3:3ceb703f893d user:  Wieland date:  Mon Oct 13 10:15:38 2008 +0200 summary:  beide Versionen zusammen D:\src\hgtalk\1>hg log -rtip ... D:\src\hgtalk\1>hg tip ... D:\src\hgtalk\1>
so einfach ist mergen 1: 1b: v0 v0 v1 v1' v2' v3 tip head tip head gleich verschieden Rep. v4 pull merge
hgtk log
Änderungen schreiben D:\src\hgtalk\1> hg outgoing ..\1b D:\src\hgtalk\1> hg push ..\1b Das ist zum Schreiben in ein Shared- Repository (ohne Workdir).
Änderungen austauschen hg pull/push/clone - Abgleichen hg export/import - Patches erz./einl hg bundle/unbundle - kompr.Teil-Repos. http://www.selenic.com/mercurial/wiki/index.cgi/CommunicatingChanges
Wie soll man arbeiten? z.B.  ein Dir „in“ (incomming) ohne wd (cache) ein Dir „out“ (outgoing) ein Dir für jeden Fix 1. Merge often!  (in und fixes) 2. Commit early and commit often http://www.selenic.com/mercurial/wiki/index.cgi/WorkingPractices
Hybrid – warum zweimal? Ein Projekt mit SVN und HG gleichzeitig. HG lokal z.B. SVN/GIT für den Rest der Welt Vorteile von beiden Systemen,  wenn man es braucht.
Keyword Extension In Textdateien z.B. $Id$ ersetzen mit $Id: prog.pl rev:hash date time user $ # .hg/hgrc [extensions] hgext.keyword=
Keyword Extension # .hg/hgrc [keyword] # expand keywords in all perl files **.pl = [keywordmaps] Date = {date|utcdate} Id = {file|basename} {rev}:{node|short} {date|utcdate} {author|user} Rev = {node|short} Node = {node}
Keyword Extension # demo.pl Date = $Date$ Id = $Id$ Rev = $Rev$ Node = $Node$ D:\src\hgtalk\1>hg add demo.pl D:\src\hgtalk\1>hg kwexpand abort: outstanding uncommitted changes in given files
Keyword Extension D:\src\hgtalk\1>hg commit -m &quot;add kw&quot; D:\src\hgtalk\1>hg kwexpand D:\src\hgtalk\1>type demo.pl Date = $Date: 2008/11/18 10:11:30 $ Id = $Id: demo.pl 12:5bd2c929da87 2008/11/18 10:11:30 Wieland $ Rev = $Rev: 5bd2c929da87 $ Node = $Node: 5bd2c929da87c55e3761778...$ Zeit ist UTC, weil utcdate sonst isodate !
Keyword Extension hg kwshrink hg kwexpand bei &quot;hg ci&quot; wird automatisch aktualisiert http://www.selenic.com/mercurial/wiki/index.cgi/KeywordExtension keywords: .../hgbookch11.html Vor und nach Änderungen der Keywords z.B. Ein-/Ausschalten
Klon über http erzeugen D:\src\hgtalk>hg clone http://hg.serpentine.com/tutorial/hello destination directory: hello requesting all changes adding changesets adding manifests adding file changes added 5 changesets with 5 changes to 2 files updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved D:\src\hgtalk>
Klon ohne WD D:\src\hgtalk>hg clone -U 1 public z.B. für Shared-Repository
Literatur: hg book (the book) “ Distributed revision control with Mercurial”, by Bryan O'Sullivan http://hgbook.red-bean.com/
Links http://www.selenic.com/mercurial/wiki/ http://tortoisehg.sourceforge.net/ Talk von Bryan O'Sullivan http://www.youtube.com/watch?v=1sV8Z_Lmpt4 Talk von Linus Torvalds http://www.youtube.com/watch?v=4XpnKHJAok8 Talk von Randal Schwartz http://www.youtube.com/watch?v=8dhZ9BXQgc4
Links II Referenzkarten DongWoo Lee: Mercurial Cheat Sheet http://edong.net/2008v1/docs/dongwoo-Hg-120dpi.png Mercurial-QuickStart + Mercurial-Usage http://www.ivy.fr/mercurial/ref/v1.0/
Fragen?
Danke!

Einführung Mercurial

  • 1.
    Versionsverwaltung? Real Programmersdon't need version control. N.N.
  • 2.
    Geschichte SCCS (1970er,Dateien, Sperren, nicht frei) RCS (1980er, Dateien, Sperren, frei) CVS (1985-, Dateien, keine Sperren, frei) Subversion (SVN) (2001-, frei) Git (2005-, frei) Mercurial (2005-, frei) andere : clearcase, perforce, bitkeeper ($$$$)
  • 3.
    Installation Windows: TortoiseHg-0.x.y.exehttp://tortoisehg.sourceforge.net/ alles drin Linux/Unix/MacOS X: mercurial-1.0.2.tar.gz http://www.selenic.com/mercurial man braucht Python >=2.3, 3-way merge, gcc Konfigurieren (Name, E-Mail, ...) auf Rechner oder im Repository
  • 4.
    Kommandozeile D:\src\hgtalk>hg versionMercurial Distributed SCM (version 1.0.2+tortoisehg) ... D:\src\hgtalk>hg help init hg init [-e CMD] [--remotecmd CMD] [DEST] create a new repository in the given directory ... D:\src\hgtalk>
  • 5.
    hg init D:\src\hgtalk>mkdir1 D:\src\hgtalk>cd 1 D:\src\hgtalk\1>hg init oder D:\src\hgtalk>hg init 1 D:\src\hgtalk>cd 1
  • 6.
    Leerer Arbeitsbereich D:\src\hgtalk\1>dir12.10.2008 21:57 <DIR> . 12.10.2008 21:57 <DIR> .. 12.10.2008 21:57 <DIR> .hg 0 Datei(en), 0 Bytes 3 Verzeichnis(se), 80.418.877.440 Bytes frei
  • 7.
  • 8.
  • 9.
  • 10.
    .hgignore ist leer(später mehr)
  • 11.
    hg status (kurz st) D:\src\hgtalk\1>hg st ? .hgignore ? info1.pl D:\src\hgtalk\1>
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    die ignorierten Dateiensind weg D:\src\hgtalk\1>hg status ? info1.pl D:\src\hgtalk\1>
  • 18.
    die ignorierten Dateiensind weg D:\src\hgtalk\1>hg status ? info1.pl D:\src\hgtalk\1>dir 12.10.2008 18:54 <DIR> .hg 12.10.2008 20:48 111 .hgignore 12.10.2008 18:54 0 .hgignore.$$$ 12.10.2008 19:14 90 info1.pl D:\src\hgtalk\1>
  • 19.
  • 20.
    ... oder auchdie ignorierten
  • 21.
    Dateien hinzufügen D:\src\hgtalk\1>hgadd info1.pl D:\src\hgtalk\1>hg st A info1.pl D:\src\hgtalk\1>hg commit D:\src\hgtalk\1>hg st D:\src\hgtalk\1> Achtung: hg add ohne Parameter nimmt alle Dateien rekursiv. Öffnet Editor für Kommentar
  • 22.
  • 23.
    Änderungen D:\src\hgtalk\1>type info1.pluse strict; print &quot;Hg steht für: Mercurial\n&quot;; D:\src\hgtalk\1>hg st M info1.pl D:\src\hgtalk\1>
  • 24.
    Status „geändert“ imExplorer Neue und ignorierte Dateien ohne Symbol
  • 25.
    noch jemand willarbeiten D:\src\hgtalk>hg clone 1 1b updating working directory 1 files updated, 0 files merged, 0 files removed, 0 files unresolved D:\src\hgtalk>cd 1b D:\src\hgtalk\1b>type info1.pl use strict; print &quot;Hg steht für: hydrargyrum, chemisches Symbol für Quecksilber\n&quot;; D:\src\hgtalk\1b>
  • 26.
    ... und ändert,... D:\src\hgtalk\1b>copy ..\1\.hgignore . D:\src\hgtalk\1b>hg diff diff -r 134e009f9517 info1.pl --- a/info1.pl Sun Oct 12 23:14:23 2008 +0200 +++ b/info1.pl Sun Oct 12 23:43:29 2008 +0200 @@ -1,4 +1,5 @@ use strict; print &quot;Hg steht für: hydrargyrum, chemisches Symbol für Quecksilber\n&quot;; +print &quot; oder auch für Hochschulgesetz\n&quot;; D:\src\hgtalk\1b>hg commit D:\src\hgtalk\1b>
  • 27.
    ... es siehtgut aus D:\src\hgtalk\1b>hg st D:\src\hgtalk\1b>hg log changeset: 1:4e94b6009d08 tag: tip user: Wieland date: Sun Oct 12 23:45:13 2008 +0200 summary: gesetz changeset: 0:134e009f9517 user: Wieland date: Sun Oct 12 23:14:23 2008 +0200 summary: start D:\src\hgtalk\1b>
  • 28.
    In 1 merkenwir nichts, ... D:\src\hgtalk\1>hg diff diff -r 134e009f9517 info1.pl --- a/info1.pl Sun Oct 12 23:14:23 2008 +0200 +++ b/info1.pl Sun Oct 12 23:47:16 2008 +0200 @@ -1,4 +1,4 @@ use strict; -print &quot;Hg steht für: hydrargyrum, chemisches Symbol für Quecksilber\n&quot;; +print &quot;Hg steht für: Mercurial\n&quot;; D:\src\hgtalk\1>
  • 29.
    ... auch nichtbeim einchecken D:\src\hgtalk\1>hg ci -m &quot;hg4hg&quot; D:\src\hgtalk\1>hg log changeset: 1:69fb82b0a16f tag: tip user: Wieland date: Mon Oct 13 01:22:14 2008 +0200 summary: hg4hg changeset: 0:134e009f9517 user: Wieland date: Sun Oct 12 23:14:23 2008 +0200 summary: start D:\src\hgtalk\1> Öffnet nicht Editor für Kommentar
  • 30.
    gleicher Anfang, andersweiter 1: 1b: v0 v0 v1 v1'
  • 31.
    was hat 1bgeändert? D:\src\hgtalk\1>hg incoming ..\1b comparing with ..\1b searching for changes changeset: 1:4e94b6009d08 tag: tip user: Wieland date: Sun Oct 12 23:45:13 2008 +0200 summary: gesetz D:\src\hgtalk\1>
  • 32.
    wenn 1b nochgeändert hat? D:\src\hgtalk\1>hg incoming ..\1b comparing with ..\1b searching for changes changeset: 1:4e94b6009d08 user: Wieland date: Sun Oct 12 23:45:13 2008 +0200 summary: gesetz changeset: 2:3ceb703f893d tag: tip user: Wieland date: Mon Oct 13 01:34:23 2008 +0200 summary: !!!
  • 33.
    was genau hat1b geändert? D:\src\hgtalk\1>hg incoming -p ..\1b comparing with ..\1b searching for changes changeset: 1:4e94b6009d08 ... diff -r 134e009f9517 -r 4e94b6009d08 info1.pl --- a/info1.pl Sun Oct 12 23:14:23 2008 +0200 +++ b/info1.pl Sun Oct 12 23:45:13 2008 +0200 @@ -1,4 +1,5 @@ ... changeset: 2:3ceb703f893d tag: tip ...
  • 34.
    gleicher Anfang, andersweiter 1: 1b: v0 v0 v1 v1' v2'
  • 35.
    von 1b holenD:\src\hgtalk\1>hg pull ..\1b pulling from ..\1b 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) D:\src\hgtalk\1>
  • 36.
    gleicher Anfang, andersweiter 1: 1b: v0 v0 v1 v1' v2' v3 tip heads tip head gleich verschieden Rep. wd
  • 37.
    viele Köpfe D:\src\hgtalk\1>hgheads changeset: 3:3ceb703f893d tag: tip user: Wieland date: Mon Oct 13 01:34:23 2008 +0200 summary: !!! changeset: 1:69fb82b0a16f user: Wieland date: Mon Oct 13 01:22:14 2008 +0200 summary: hg4hg D:\src\hgtalk\1>
  • 38.
  • 39.
    ... im wdgelöst v0 v1 v2' v3
  • 40.
    Knoten automatisch aufgelöst1: 1b: v0 v0 v1 v1' v2' v3 tip heads tip head gleich verschieden Rep. wd
  • 41.
    Ergebnis des LösensD:\src\hgtalk\1>hg diff diff -r 69fb82b0a16f info1.pl --- a/info1.pl Mon Oct 13 01:22:14 2008 +0200 +++ b/info1.pl Mon Oct 13 10:14:11 2008 +0200 @@ -1,4 +1,5 @@ use strict; print &quot;Hg steht für: Mercurial\n&quot;; +print &quot; oder auch für Hochschulgesetz !!!\n&quot;; D:\src\hgtalk\1>
  • 42.
    Ergebnis speichern D:\src\hgtalk\1>hgcommit D:\src\hgtalk\1>hg st D:\src\hgtalk\1>hg log changeset: 4:024fdf725d5d tag: tip parent: 1:69fb82b0a16f parent: 3:3ceb703f893d user: Wieland date: Mon Oct 13 10:15:38 2008 +0200 summary: beide Versionen zusammen ... D:\src\hgtalk\1>
  • 43.
    hg tip D:\src\hgtalk\1>hglog -r4 changeset: 4:024fdf725d5d tag: tip parent: 1:69fb82b0a16f parent: 3:3ceb703f893d user: Wieland date: Mon Oct 13 10:15:38 2008 +0200 summary: beide Versionen zusammen D:\src\hgtalk\1>hg log -rtip ... D:\src\hgtalk\1>hg tip ... D:\src\hgtalk\1>
  • 44.
    so einfach istmergen 1: 1b: v0 v0 v1 v1' v2' v3 tip head tip head gleich verschieden Rep. v4 pull merge
  • 45.
  • 46.
    Änderungen schreiben D:\src\hgtalk\1>hg outgoing ..\1b D:\src\hgtalk\1> hg push ..\1b Das ist zum Schreiben in ein Shared- Repository (ohne Workdir).
  • 47.
    Änderungen austauschen hgpull/push/clone - Abgleichen hg export/import - Patches erz./einl hg bundle/unbundle - kompr.Teil-Repos. http://www.selenic.com/mercurial/wiki/index.cgi/CommunicatingChanges
  • 48.
    Wie soll manarbeiten? z.B. ein Dir „in“ (incomming) ohne wd (cache) ein Dir „out“ (outgoing) ein Dir für jeden Fix 1. Merge often! (in und fixes) 2. Commit early and commit often http://www.selenic.com/mercurial/wiki/index.cgi/WorkingPractices
  • 49.
    Hybrid – warumzweimal? Ein Projekt mit SVN und HG gleichzeitig. HG lokal z.B. SVN/GIT für den Rest der Welt Vorteile von beiden Systemen, wenn man es braucht.
  • 50.
    Keyword Extension InTextdateien z.B. $Id$ ersetzen mit $Id: prog.pl rev:hash date time user $ # .hg/hgrc [extensions] hgext.keyword=
  • 51.
    Keyword Extension #.hg/hgrc [keyword] # expand keywords in all perl files **.pl = [keywordmaps] Date = {date|utcdate} Id = {file|basename} {rev}:{node|short} {date|utcdate} {author|user} Rev = {node|short} Node = {node}
  • 52.
    Keyword Extension #demo.pl Date = $Date$ Id = $Id$ Rev = $Rev$ Node = $Node$ D:\src\hgtalk\1>hg add demo.pl D:\src\hgtalk\1>hg kwexpand abort: outstanding uncommitted changes in given files
  • 53.
    Keyword Extension D:\src\hgtalk\1>hgcommit -m &quot;add kw&quot; D:\src\hgtalk\1>hg kwexpand D:\src\hgtalk\1>type demo.pl Date = $Date: 2008/11/18 10:11:30 $ Id = $Id: demo.pl 12:5bd2c929da87 2008/11/18 10:11:30 Wieland $ Rev = $Rev: 5bd2c929da87 $ Node = $Node: 5bd2c929da87c55e3761778...$ Zeit ist UTC, weil utcdate sonst isodate !
  • 54.
    Keyword Extension hgkwshrink hg kwexpand bei &quot;hg ci&quot; wird automatisch aktualisiert http://www.selenic.com/mercurial/wiki/index.cgi/KeywordExtension keywords: .../hgbookch11.html Vor und nach Änderungen der Keywords z.B. Ein-/Ausschalten
  • 55.
    Klon über httperzeugen D:\src\hgtalk>hg clone http://hg.serpentine.com/tutorial/hello destination directory: hello requesting all changes adding changesets adding manifests adding file changes added 5 changesets with 5 changes to 2 files updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved D:\src\hgtalk>
  • 56.
    Klon ohne WDD:\src\hgtalk>hg clone -U 1 public z.B. für Shared-Repository
  • 57.
    Literatur: hg book(the book) “ Distributed revision control with Mercurial”, by Bryan O'Sullivan http://hgbook.red-bean.com/
  • 58.
    Links http://www.selenic.com/mercurial/wiki/ http://tortoisehg.sourceforge.net/Talk von Bryan O'Sullivan http://www.youtube.com/watch?v=1sV8Z_Lmpt4 Talk von Linus Torvalds http://www.youtube.com/watch?v=4XpnKHJAok8 Talk von Randal Schwartz http://www.youtube.com/watch?v=8dhZ9BXQgc4
  • 59.
    Links II ReferenzkartenDongWoo Lee: Mercurial Cheat Sheet http://edong.net/2008v1/docs/dongwoo-Hg-120dpi.png Mercurial-QuickStart + Mercurial-Usage http://www.ivy.fr/mercurial/ref/v1.0/
  • 60.
  • 61.