Your SlideShare is downloading. ×
Einführung Mercurial
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Einführung Mercurial

1,895
views

Published on

Published in: Technology, Business

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,895
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Versionsverwaltung?
      • Real Programmers don'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.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
  • 4. Kommandozeile
      • D:srchgtalk>hg version
      • Mercurial Distributed SCM (version 1.0.2+tortoisehg)
      • ...
      • D:srchgtalk>hg help init
      • hg init [-e CMD] [--remotecmd CMD] [DEST]
      • create a new repository in the given directory
      • ...
      • D:srchgtalk>
  • 5. hg init
      • D:srchgtalk>mkdir 1
      • D:srchgtalk>cd 1
      • D:srchgtalk1>hg init
      • oder
      • D:srchgtalk>hg init 1
      • D:srchgtalk>cd 1
  • 6. Leerer Arbeitsbereich
      • D:srchgtalk1>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
  • 7. TortoiseHG Kontextmenü im Explorer
  • 8. Repository erzeugen (.hg-Verz.)
  • 9. entspricht „hg init“
  • 10. .hgignore ist leer (später mehr)
  • 11. hg status (kurz st)
      • D:srchgtalk1>hg st
      • ? .hgignore
      • ? info1.pl
      • D:srchgtalk1>
  • 12. jetzt unter Windows ...
  • 13. ... hg status
  • 14. erstmal sieht man nichts ...
  • 15. ... Status unbekannt anwählen
  • 16. .hgignore blendet Dateimuster aus
  • 17. die ignorierten Dateien sind weg
      • D:srchgtalk1>hg status
      • ? info1.pl
      • D:srchgtalk1>
  • 18. die ignorierten Dateien sind weg
      • D:srchgtalk1>hg status
      • ? info1.pl
      • D:srchgtalk1>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:srchgtalk1>
  • 19. unter Windows genauso ...
  • 20. ... oder auch die ignorierten
  • 21. Dateien hinzufügen
      • D:srchgtalk1>hg add info1.pl
      • D:srchgtalk1>hg st
      • A info1.pl
      • D:srchgtalk1>hg commit
      • D:srchgtalk1>hg st
      • D:srchgtalk1>
      • Achtung: hg add ohne Parameter nimmt alle
      • Dateien rekursiv.
    Öffnet Editor für Kommentar
  • 22. Status im Explorer
  • 23. Änderungen
      • D:srchgtalk1>type info1.pl
      • use strict;
      • print &quot;Hg steht für: Mercurial &quot;;
      • D:srchgtalk1>hg st
      • M info1.pl
      • D:srchgtalk1>
  • 24. Status „geändert“ im Explorer Neue und ignorierte Dateien ohne Symbol
  • 25. noch jemand will arbeiten
      • D:srchgtalk>hg clone 1 1b
      • updating working directory
      • 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
      • D:srchgtalk>cd 1b
      • D:srchgtalk1b>type info1.pl
      • use strict;
      • print &quot;Hg steht für: hydrargyrum, chemisches Symbol für Quecksilber &quot;;
      • D:srchgtalk1b>
  • 26. ... und ändert, ...
      • D:srchgtalk1b>copy ..1.hgignore .
      • D:srchgtalk1b>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 &quot;;
      • +print &quot; oder auch für Hochschulgesetz &quot;;
      • D:srchgtalk1b>hg commit
      • D:srchgtalk1b>
  • 27. ... es sieht gut aus
      • D:srchgtalk1b>hg st
      • D:srchgtalk1b>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:srchgtalk1b>
  • 28. In 1 merken wir nichts, ...
      • D:srchgtalk1>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 &quot;;
      • +print &quot;Hg steht für: Mercurial &quot;;
      • D:srchgtalk1>
  • 29. ... auch nicht beim einchecken
      • D:srchgtalk1>hg ci -m &quot;hg4hg&quot;
      • D:srchgtalk1>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:srchgtalk1>
    Öffnet nicht Editor für Kommentar
  • 30. gleicher Anfang, anders weiter 1: 1b: v0 v0 v1 v1'
  • 31. was hat 1b geändert?
      • D:srchgtalk1>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:srchgtalk1>
  • 32. wenn 1b noch geändert hat?
      • D:srchgtalk1>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 hat 1b geändert?
      • D:srchgtalk1>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, anders weiter 1: 1b: v0 v0 v1 v1' v2'
  • 35. von 1b holen
      • D:srchgtalk1>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:srchgtalk1>
  • 36. gleicher Anfang, anders weiter 1: 1b: v0 v0 v1 v1' v2' v3 tip heads tip head gleich verschieden Rep. wd
  • 37. viele Köpfe
      • D:srchgtalk1>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:srchgtalk1>
  • 38. Konflikte lösen (hg merge)
  • 39. ... im wd gelöst v0 v1 v2' v3
  • 40. Knoten automatisch aufgelöst 1: 1b: v0 v0 v1 v1' v2' v3 tip heads tip head gleich verschieden Rep. wd
  • 41. Ergebnis des Lösens
      • D:srchgtalk1>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 &quot;;
      • +print &quot; oder auch für Hochschulgesetz !!! &quot;;
      • D:srchgtalk1>
  • 42. Ergebnis speichern
      • D:srchgtalk1>hg commit
      • D:srchgtalk1>hg st
      • D:srchgtalk1>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:srchgtalk1>
  • 43. hg tip
      • D:srchgtalk1>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:srchgtalk1>hg log -rtip
      • ...
      • D:srchgtalk1>hg tip
      • ...
      • D:srchgtalk1>
  • 44. so einfach ist mergen 1: 1b: v0 v0 v1 v1' v2' v3 tip head tip head gleich verschieden Rep. v4 pull merge
  • 45. hgtk log
  • 46. Änderungen schreiben
      • D:srchgtalk1> hg outgoing ..1b
      • D:srchgtalk1> hg push ..1b
      • Das ist zum Schreiben in ein Shared-
      • Repository (ohne Workdir).
  • 47. Ä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
  • 48. 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
  • 49. 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.
  • 50. Keyword Extension
      • In Textdateien 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:srchgtalk1>hg add demo.pl
      • D:srchgtalk1>hg kwexpand
      • abort: outstanding uncommitted changes in given files
  • 53. Keyword Extension
      • D:srchgtalk1>hg commit -m &quot;add kw&quot;
      • D:srchgtalk1>hg kwexpand
      • D:srchgtalk1>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
      • 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
  • 55. Klon über http erzeugen
      • D:srchgtalk>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:srchgtalk>
  • 56. Klon ohne WD
      • D:srchgtalk>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 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/
  • 60. Fragen?
  • 61. Danke!