Tutoriál 6 - Stažení změn s jiného repozitáře
Předchozí kapitola Tutoriálu pojednávala o Naší první změně, následující kapitola popíše Export změny do souboru
V předchozí kapitole jsme v adresáři moje-halo-output změnili soubor a vytvořili changeset v repozitáři. Nyní chceme tuto změnu někam předat.
Podle zavedené zvyklosti si nejprve vytvoříme klon originálního adresáře.
> cd .. > hg clone moje-halo moje-halo-share updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Můžeme použít příkaz tip, abychom zjistili, který changset je poslední v repozitáři. Zadáme volbu -q ("be quiet") aby Mercurial nevytiskl úplný popis tipu.
> cd moje-halo-share > hg -q tip 1:82e55d328c8c > cd ../moje-halo-output $ hg -q tip 2:86794f718fb1
Jak vidíme, v každém repozitáři je jiný tip. Vraťme se do moje-halo-share a přenesme tam náš nový changeset. Provedeme to příkazem pull, který "stáhne" všechny odlišné changesety do našeho repozitáře.
> cd ../moje-halo-share > hg pull ../moje-halo-output pulling from ../moje-halo-output searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (run 'hg update' to get a working copy)
Na rozdíl od jiných příkazů Mercurialu je pull hovorný. V tomto případě bylo stažení úspěšné.
Poslední řádek výstupu je důležitý. Mercurial implicitně neaktualizuje pracovní adresář po příkazu pull. To znamená, že i když repozitář obsahuje poslední changeset, má soubor hello.c stále ještě nezměněný obsah. Provedeme aktualizaci souboru (a případně všech ostatních, které mohly vzniknout během operace pull) příkazem update, použijeme však zkratku up:
> hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
V této chvíli lze zkontrolovat, že moje-halo-share a moje-halo-output mají shodné obsahy a historii revizí.
Kontrolu lze provést tak, že z adresáře moje-halo-share provedeme následující:
> hg pull ../ 'moje-halo-output' > hg push ../ 'moje-halo-output'
Jestliže v obou případech dostaneme 'no changes found' (změny nenalezeny), znamená to, že jsou repozitáře identické. Totéž můžeme provést pro 'moje-halo-share z adresáře 'moje-halo-output.
K zaslání změn jiné osobě se dostaneme v další kapitole Export změny do souboru.