Да, вы можете настроить инструмент слияния , как описывает Кртек. Я только что попробовал, и это работает:
[merge-tools]
merge-tags.executable = cat
merge-tags.args = $local $other | sort -u >> $output
[merge-patterns]
.hgtags = merge-tags
Поместите это в ваш файл .hg/hgrc
на сервере, и будущие слияния будут просто добавлять теги. Что происходит, hg merge
выполнит
cat /tmp/hgtags.local /tmp/hgtags.other | sort -u >> .hgtags
, где первый аргумент cat
- это локальная версия файла .hgtags
, а второй аргумент - версия, с которой вы объединяетесь.
Я сортирую и делаю вывод уникальным, чтобы избежать дублирования строк, которые являются общими в двух файлах. Пока вы только добавляете теги, это будет работать нормально - но если вы также удалите теги, то порядок строк в файле .hgtags
имеет значение, и вы не можете просто отсортировать его следующим образом. Пожалуйста, смотрите мой расширенный ответ для обработки этой ситуации.
Это мой тестовый сеанс. Я начинаю с создания хранилища с двумя головами:
$ 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
Ветви видны в выводе из расширения graphlog :
@ changeset: 4:54c5397a23a4
| tag: tip
| user: Martin Geisler <mg@aragost.com>
| 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 <mg@aragost.com>
| date: Wed Mar 02 11:45:17 2011 +0100
| summary: c
|
| o changeset: 2:a9af8514a64e
| | user: Martin Geisler <mg@aragost.com>
| | 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 <mg@aragost.com>
| date: Wed Mar 02 11:44:44 2011 +0100
| summary: b
|
o changeset: 0:0db5fae8b6cc
user: Martin Geisler <mg@aragost.com>
date: Wed Mar 02 11:44:33 2011 +0100
summary: a
В файле .hgtags
имеется конфликт:
$ hg cat -r 2 .hgtags
0518533f37f6f37edbea5b46d9af2192f69ddecd b
$ hg cat -r 4 .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c
, но объединение все еще неинтерактивно:
$ hg merge
merging .hgtags
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Вы можете видеть, как файлы были добавлены:
$ cat .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c
0518533f37f6f37edbea5b46d9af2192f69ddecd b