). Je free a má spoustu zajímavých vlastností.
verzovací systém. Má převážně komerční licenci a výborné nástroje na mergování a branchování. Co můžou mít tyto dva systémy společného?
je grafický nástroj pro merge a diff. Je jednou ze silných zbraní P4. Já jsem ho vždycky rád používal. Jeho výhodou je, že akceptuje parametry z příkazové řádky, takže jej lze použít i mimo rámec P4 a to buď úplně samostatně, nebo jako externí nástroj z jiné aplikace. Třeba Mercurialu :-)
(3-4 parametry). Každý parametr je cesta k porovnávanému souboru.
P4Merge sice není open source, ale je free, takže nic nebrání jeho zakomponování do jiného nástroje.
Mercurial neobsahuje nástroj na vizuální merge. Pokud je potřeba zmergovat konfliktní změny a žádný nástroj
není nakonfigurovaný, tak Mercurial vloží do sloučeného souboru mergovací značky (takový to
<<<<<<<<<<< something). To asi nechceme :-)
Mergovacích nástrojů existuje spousta, každý si určitě vybere. Já jsem si oblíbil P4Merge - přece jenom, když něco s oblibou používáte dva roky, tak vám to trochu přiroste k srdci. Jak teda Mercurialu podstrčíme P4Merge?
Konfigurace merge nástroje je v souboru
~/.hgrc v sekci
[merge-tools]:
[merge-tools]
p4.priority = 60
p4.premerge = True
p4.executable = p4merge
p4.gui = True
p4.args = $base $other $local $output
p4.binary = False
[extensions]
hgext.extdiff =
[extdiff]
cmd.p4diff = p4merge
cmd.meld = meld
Jak je vidět, nastavil jsem si kromě merge nástroje i externí diff. Takže když pustím příkaz
hg p4diff file1 file2, spustí se mi také P4Merge, tentokrát jako diff nástroj.
 |
| Merge pomocí P4Merge |
Je to opravdu taková idyla?
Není. Abych byl maximálně spokojený, chybí mi (zatím) dvě věci. Jednak bych rád, abych mohl provést hromadný merge - Mercurial totiž dělá to, že pro každý mergovaný soubor sekvenčně spustí P4Merge. A já bych chtěl např. hromadně přijmout příchozí, nebo své změny. Což je věc, kterou P4 normálně umí. Ale asi je to zajištěno přes
P4V klienta.
Druhá vada na kráse je, že P4Merge neumí diff více souborů (např. příkaz
hg p4diff -r 12:tip). Takže ho nemůžu použít pro vizuální diff mezi revizemi. To je důvod, proč mám v souboru
.hgrc jako další externí diff nástroj
Meld, který diff adresářů umí.
 |
| Meld, vizuální diff mezi revizemi |
Máte nějaké tipy na používání P4Merge, nebo jiného vizuálního nástroje na merge v Mercurialu? Budu rád, když se podělíte o své zkušenosti v komentářích.
Související články