Tutoriál 5 - Sdílení změny s jiným repozitářem
(Předchozí kapitola Tutoriálu pojednávala o Vytvoření první změny, následující kapitola bude o Export změny do souboru)
V kapitole Vytvoření první změny jsme v adresáři mojeHalo-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 mojeHalo mojeHalo-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, co je "tipem" každého repozitáře. (Víme, že slovem tip označujeme poslední changeset.) Zadáme volbu -q ("be quiet") aby Mercurial nevytiskl úplný popis tipu.
> cd mojeHalo-share > hg -q tip 1:82e55d328c8c > cd ../mojeHalo-output $ hg -q tip 2:86794f718fb1
Jak vidíme, v každém repozitáři je jiný tip. Vraťme se do mojeHalo-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 ../mojeHalo-share > hg pull ../mojeHalo-output pulling from ../mojeHalo-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 přetaž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 mojeHalo-share a mojeHalo-output mají shodné obsahy a historii revizí.
Kontrolu lze provést tak, že z adresáře mojeHalo-share provedeme následující:
> hg pull ../ 'mojeHalo-output' > hg push ../ 'mojeHalo-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 'mojeHalo-share z adresáře 'mojeHalo-output.
??How, exactly would we 'check and see'? This would be a great time, perhaps, to at least reference the comparison tools available.??
Ke sdílení změn s další osobou se dostaneme až v další kapitole Sdílení změn s jinou osobou.