Sì, è possibile impostare un merge tool come descritto da Krtek. Ho appena provato fuori e questo funziona:
[merge-tools]
merge-tags.executable = cat
merge-tags.args = $local $other | sort -u >> $output
[merge-patterns]
.hgtags = merge-tags
Metti che nel file .hg/hgrc
sul server e unioni future sarà solo aggiungere i tag. Quello che succede è che hg merge
eseguirà
cat /tmp/hgtags.local /tmp/hgtags.other | sort -u >> .hgtags
dove il primo argomento di cat
è la versione locale del file .hgtags
, e il secondo argomento è la versione che si sta fondendo con.
Ho ordinato e reso l'output univoco al fine di evitare la duplicazione di linee comuni nei due file. Finché si aggiungono solo tag, questo funzionerà correttamente, ma se si eliminano anche i tag, l'ordine delle righe nel file .hgtags
è importante e quindi non è possibile ordinarlo in questo modo. Si prega di vedere my extended answer per la gestione di questa situazione.
Questa è la mia sessione di test.Comincio facendo un repository con due teste:
$ hg init
$ echo a > a.txt
$ hg add a.txt
$ hg commit -m a
$ echo b > b.txt
$ hg add b.txt
$ hg commit -m b
$ hg tag b
$ hg update 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo c > c.txt
$ hg add c.txt
$ hg commit -m c
created new head
$ hg tag c
I rami sono visibili nel uscita dal graphlog extension:
@ changeset: 4:54c5397a23a4
| tag: tip
| user: Martin Geisler <[email protected]>
| date: Wed Mar 02 11:45:20 2011 +0100
| summary: Added tag c for changeset aff5fe9be7d9
|
o changeset: 3:aff5fe9be7d9
| tag: c
| parent: 0:0db5fae8b6cc
| user: Martin Geisler <[email protected]>
| date: Wed Mar 02 11:45:17 2011 +0100
| summary: c
|
| o changeset: 2:a9af8514a64e
| | user: Martin Geisler <[email protected]>
| | date: Wed Mar 02 11:45:02 2011 +0100
| | summary: Added tag b for changeset 0518533f37f6
| |
| o changeset: 1:0518533f37f6
|/ tag: b
| user: Martin Geisler <[email protected]>
| date: Wed Mar 02 11:44:44 2011 +0100
| summary: b
|
o changeset: 0:0db5fae8b6cc
user: Martin Geisler <[email protected]>
date: Wed Mar 02 11:44:33 2011 +0100
summary: a
Esiste un conflitto nel file .hgtags
:
$ hg cat -r 2 .hgtags
0518533f37f6f37edbea5b46d9af2192f69ddecd b
$ hg cat -r 4 .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c
ma l'unione è ancora non interattiva:
$ hg merge
merging .hgtags
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Si può vedere come i file sono stati aggiunti:
$ cat .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c
0518533f37f6f37edbea5b46d9af2192f69ddecd b
Solo per curiosità, perché vorresti convertire i repository CVS con un cron job? –
@Oben: conversione incrementale. Sto facendo lo stesso da SVN-> Hg (meno il repo che combina.) –