Sí, puede configurar un merge tool como describe Krtek. Yo sólo lo probé y funciona esto:
[merge-tools]
merge-tags.executable = cat
merge-tags.args = $local $other | sort -u >> $output
[merge-patterns]
.hgtags = merge-tags
poner esto en su archivo en el servidor .hg/hgrc
y futuras fusiones se acaba de añadir las etiquetas. Lo que pasa es que hg merge
ejecutará
cat /tmp/hgtags.local /tmp/hgtags.other | sort -u >> .hgtags
donde el primer argumento de cat
es la versión local del archivo .hgtags
, y el segundo argumento es la versión que está combinando con.
Ordeno y hago único el resultado para evitar la duplicación de líneas que son comunes en los dos archivos. Siempre que solo agregue etiquetas, esto funcionará bien, pero si también elimina las etiquetas, entonces el orden de las líneas en el archivo .hgtags
es importante y, por lo tanto, no puede ordenarlo así. Consulte my extended answer para manejar esta situación.
Esta es mi sesión de prueba.Comienzo por hacer un depósito con dos cabezas:
$ 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
Las ramas son visibles en la salida de la 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
Hay un conflicto en el archivo .hgtags
:
$ hg cat -r 2 .hgtags
0518533f37f6f37edbea5b46d9af2192f69ddecd b
$ hg cat -r 4 .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c
pero la combinación sigue siendo no interactiva:
$ hg merge
merging .hgtags
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Se puede ver cómo se adjuntaron los archivos:
$ cat .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c
0518533f37f6f37edbea5b46d9af2192f69ddecd b
Solo por curiosidad, ¿por qué quieres convertir los repos de CVS con un trabajo de cron? –
@Oben: conversión incremental. Estoy haciendo lo mismo desde SVN-> Hg (sin la combinación de repo.) –