Tutoriál 4 - Zkoumání historie repozitáře
Předchozí téma Tutoriálu bylo Klonování repozitáře. Následné téma je 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 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 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 čí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 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), 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 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 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 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 Vytvoření první změny!