- 1. Versionsverwaltung?
-
- Real Programmers don't need version control.
2. Geschichte
- SCCS (1970er, Dateien, Sperren, nicht frei)
-
- RCS(1980er, Dateien, Sperren, frei)
-
- CVS(1985-, Dateien, keine Sperren, frei)
-
- Subversion (SVN) (2001-, 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
-
- Mercurial Distributed SCM (version 1.0.2+tortoisehg)
-
- hg init [-e CMD] [--remotecmd CMD] [DEST]
-
- create a new repository in the given directory
5. hg init
6. Leerer Arbeitsbereich
-
- 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 (spter
mehr) 11. hg status(kurz st)
12. jetzt unter Windows ... 13. ... hg status 14. erstmal sieht
man nichts ... 15. ... Status unbekannt anwhlen 16. .hgignore
blendet Dateimuster aus 17. die ignorierten Dateien sind weg
18. die ignorierten Dateien sind weg
-
- 12.10.200820:48111 .hgignore
-
- 12.10.200818:540 .hgignore.$$$
-
- 12.10.200819:1490 info1.pl
19. unter Windows genauso ... 20. ... oder auch die ignorierten
21. Dateien hinzufgen
-
- D:srchgtalk1>hg add info1.pl
-
- Achtung: hg add ohne Parameter nimmt alle
ffnet Editor fr Kommentar 22. Status im Explorer 23.
nderungen
-
- D:srchgtalk1>type info1.pl
-
- print "Hg steht fr: Mercurial ";
24. Status gendert 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:srchgtalk1b>type info1.pl
-
- print "Hg steht fr: hydrargyrum, chemisches Symbol fr
Quecksilber ";
26. ... und ndert, ...
-
- D:srchgtalk1b>copy ..1.hgignore .
-
- diff -r 134e009f9517 info1.pl
-
- --- a/info1.plSun Oct 12 23:14:23 2008 +0200
-
- +++ b/info1.plSun Oct 12 23:43:29 2008 +0200
-
- print "Hg steht fr: hydrargyrum, chemisches Symbol fr
Quecksilber ";
-
- +print "oder auch fr Hochschulgesetz ";
27. ... es sieht gut aus
-
- date:Sun Oct 12 23:45:13 2008 +0200
-
- date:Sun Oct 12 23:14:23 2008 +0200
28. In 1 merken wir nichts, ...
-
- diff -r 134e009f9517 info1.pl
-
- --- a/info1.plSun Oct 12 23:14:23 2008 +0200
-
- +++ b/info1.plSun Oct 12 23:47:16 2008 +0200
-
- -print "Hg steht fr: hydrargyrum, chemisches Symbol fr
Quecksilber ";
-
- +print "Hg steht fr: Mercurial ";
29. ... auch nicht beim einchecken
-
- D:srchgtalk1>hg ci -m "hg4hg"
-
- date:Mon Oct 13 01:22:14 2008 +0200
-
- date:Sun Oct 12 23:14:23 2008 +0200
ffnet nicht Editor fr Kommentar 30. gleicher Anfang, anders
weiter 1: 1b: v0 v0 v1 v1' 31. was hat 1b gendert?
-
- D:srchgtalk1>hg incoming ..1b
-
- date:Sun Oct 12 23:45:13 2008 +0200
32. wenn 1b noch gendert hat?
-
- D:srchgtalk1>hg incoming ..1b
-
- date:Sun Oct 12 23:45:13 2008 +0200
-
- date:Mon Oct 13 01:34:23 2008 +0200
33. was genau hat 1b gendert?
-
- D:srchgtalk1>hg incoming-p ..1b
-
- diff -r 134e009f9517 -r 4e94b6009d08 info1.pl
-
- --- a/info1.plSun Oct 12 23:14:23 2008 +0200
-
- +++ b/info1.plSun Oct 12 23:45:13 2008 +0200
34. gleicher Anfang, anders weiter 1: 1b: v0 v0 v1 v1' v2' 35.
von 1b holen
-
- D:srchgtalk1>hg pull ..1b
-
- added 2 changesets with 2 changes to 1 files (+1 heads)
-
- (run 'hg heads' to see heads, 'hg merge' to merge)
36. gleicher Anfang, anders weiter 1: 1b: v0 v0 v1 v1' v2' v3
tip heads tip head gleich verschieden Rep. wd 37. viele Kpfe
-
- date:Mon Oct 13 01:34:23 2008 +0200
-
- date:Mon Oct 13 01:22:14 2008 +0200
38. Konflikte lsen (hg merge) 39. ... im wd gelst v0 v1 v2' v3
40. Knoten automatisch aufgelst 1: 1b: v0 v0 v1 v1' v2' v3 tip
heads tip head gleich verschieden Rep. wd 41. Ergebnis des
Lsens
-
- diff -r 69fb82b0a16f info1.pl
-
- --- a/info1.plMon Oct 13 01:22:14 2008 +0200
-
- +++ b/info1.plMon Oct 13 10:14:11 2008 +0200
-
- print "Hg steht fr: Mercurial ";
-
- +print "oder auch fr Hochschulgesetz !!! ";
42. Ergebnis speichern
-
- date:Mon Oct 13 10:15:38 2008 +0200
-
- summary:beide Versionen zusammen
43. hg tip
-
- date:Mon Oct 13 10:15:38 2008 +0200
-
- summary:beide Versionen zusammen
-
- D:srchgtalk1>hg log -rtip
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?
-
- ein Dir in (incomming) ohne wd (cache)
-
- 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.
-
- z.B. SVN/GIT fr den Rest der Welt
-
- Vorteile von beiden Systemen,
50. Keyword Extension
-
- In Textdateien z.B. $Id$ ersetzen mit
-
- $Id: prog.pl rev:hash date time user $
51. Keyword Extension
-
- # expand keywords in all perl files
-
- Id = {file|basename} {rev}:{node|short} {date|utcdate}
{author|user}
52. Keyword Extension
-
- D:srchgtalk1>hg add demo.pl
-
- abort: outstanding uncommitted changes in given files
53. Keyword Extension
-
- D:srchgtalk1>hg commit -m "add kw"
-
- 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
-
- bei "hg ci" 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
-
- added 5 changesets with 5 changes to 2 files
-
- updating working directory
-
- 2 files updated, 0 files merged, 0 files removed, 0 files
unresolved
56. Klon ohne WD
-
- D:srchgtalk>hg clone -U 1 public
-
- z.B. fr 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!