== Tutoriál 4 - Zkoumání historie repozitáře == ''Předchozí téma [[CzechTutorial|Tutoriálu]] bylo [[CzechTutorialClone|Klonování repozitáře]]. Následné téma je [[CzechTutorialFirstChange|Vytvoření první změny]].'' V této chvíli máme naklonovaný repozitář v adresáři {{{moje-halo}}}. Podívejme se na historii tohoto [[Repository|repozitáře]]. Použijeme k tomu příkaz {{{log}}}. Ten vytiskne souhrn všech událostí, které se v čase vyskytly, počínaje událostí poslední. {{{ > 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 }}} Výstupní řádky příkazu {{{log}}} potřebují jisté vystvětlení. * Každý odstavec popisuje určitý [[ChangeSet|changeset]]. Changeset je souhrn změn jednoho či více souborů, seskupený do jedné logické jednotky. * V našem příkladě nahoře vidíme, že historie repozitáře se skládá ze dvou changesetů. * {{{changeset}}} uvádí identifikaci changesetu. * První číslo před dvojtečkou je [[RevisionNumber|číslo revize]]; je to lokální úsporný způsob označení changesetu. Platí jenom uvnitř tohoto repozitáře. * Hexadecimální řetězec za dvojtečkou je zkrácená forma zápisu 40ti místného [[ChangeSetID|ID]] changesetu; toto označení je stejné ve všech repozitářích, které changeset obsahují. ID používáme při komunikaci s dalšími osobami. * {{{tag}}} ([[Tag|tag]]), je libovolné symbolické označení changesetu. * Ke každému changesetu lze připojit jeden či více tagů. Tagy se však většinou nepoužívají, takže řádek {{{tag}}} bude zřídka přítomný. * Zvláštní tag jménem {{{tip}}} označuje poslední changeset v repozitáři. * {{{user}}} označuje osobu, která changeset vytvořila. Je to volný řetězec, který obsahuje jméno a emailovou adresu. * {{{date}}} uvádí datum provedené změny. Tento datumový údaj je uváděn v lokální časové zóně tvůrce changesetu. * {{{summary}}} uvádí první řádek zprávy changesetu; popis má pomoci autorovi i ostatním poznat důvod změny (viz také [[ChangeSetComments]]). * {{{parent}}} označuje [[Parent|rodiče]] changesetu, jež mohou být i dva, jde li o rodiče sloučeného changesetu. * Většinou bývá pouze jeden rodič, což je changeset bezprostředně předcházející tomu aktuálnímu. Což je také případ našeho příkladu. Podrobnější informaci o historii získáme příkazem verbózního výstupu opcí {{{-v}}} nebo {{{--debug}}}: {{{ > hg log -v changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files: Makefile description: Create a makefile (...) > hg log --debug changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9 parent: -1:0000000000000000000000000000000000000000 manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600 user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files+: Makefile extra: branch=default description: Create a makefile (...) }}} Verbózní výstup obsahuje více polí než normální výstup. * {{{files}}} uvádí seznam upravených souborů v changesetu * {{{description}}} obsahuje úplný víceřádkový popis changesetu (pokud je zadán). * V našem případě je zadán popis pouze jednořádkový, takže ve výstupech není žádný rozdíl. Výstup `--debug` připojí následující pole k verbóznímu výstupu (viz také [[DebuggingFeatures]]): * {{{changeset}}} ukáže nezkrácené ID changsetu. * dvě pole {{{parent}}} zobrazují ID changesetů u obou rodičů, přičemž {{{-1:0000000000000000000000000000000000000000}}} odkazuje na rodiče neexistujcího. * {{{manifest}}} uvádí ID [[Manifest|manifestu]] pro tento changeset. * {{{file+}}} vypíše soubory, v changesetu přidané. * {{{file-}}} vypíše soubory, v changesetu odebrané příkazem {{{hg remove}}}. Příkaz {{{log}}} má ještě opci {{{-r}}} pro výběr určitých changesetů. {{{ > 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 }}} Opce {{{-r}}} ve skutečnosti podporuje velmi flexibilní syntaxi pro určení rozsahu changesetů. Tuto vlastnost si bohužel vzhledem k malému počtu changesetů v našem příkladě neukážeme. Více informací lze získat na [[http://www.selenic.com/mercurial/hg.1.html#log|manpage]]. Příkaz {{{log}}} má také opci {{{-p}}} pro zobrazení oprávek (patches), souvisejících s changesety: {{{ > 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 }}} případně při nastavení [defaults] diff = --git -unified 0 {{{ diff --git a/Makefile b/Makefile new file mode 100644 --- /dev/null +++ b/Makefile @@ -0,0 +1,1 @@ +all: hello }}} Můžeme také použít příkaz {{{tip}}} pro zobrazení posledního changesetu. Příkaz {{{tip}}} lze považovat za zkratku pořadí {{{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 }}} Nyní, když už máme jisté povědomí o čem je řeč, vrhněme se na provedení nějaké změny! Vzhůru na [[CzechTutorialFirstChange|Vytvoření první změny]]! ---- CategoryCzech