Предположим, у меня есть 50+ ветвей функций в Mercurial. Если я это сделаю:Как теги в Mercurial автоматически распространяются на все ветки?
hg tag some-tag
В одной из ветвей, кажется, распространяется на все ветви. Независимо от того, в какой ветке я вхожу, hg tags
покажет все теги. Все хорошо и хорошо. Но если я hg log
, он скажет мне, что ревизия, содержащие изменения .hgtags
произошла в конкретной отрасли:
changeset: 4:ea48c727fbcd
branch: feat1
tag: tip
user: Daniel <[email protected]>
date: Mon Dec 21 20:15:11 2015 +0100
files: .hgtags
description:
Added tag feat-1.0 for changeset 3c81a17d4b31
Как Mercurial держать .hgtags
синхронно во всех отраслях? Я читал Mercurial Tag Design, но в нем не упоминается никаких особенностей.
Причина, по которой я спрашиваю, заключается в том, что мы используем Rhodecode для Mercurial на работе, и эта распространенность, по-видимому, значительно отстает от , когда она находится под большой нагрузкой.
Это отставание очень раздражает, так как я могу увидеть последний тег в файле .hgtags
, но hg tags
не перечисляет последний тег. Выполнение другого тега иногда устраняет проблему (и, возможно, это ошибка в Rhodecode), но я хотел бы знать, как это работает, чтобы лучше понять базовый механизм.
В какой версии вы работаете? Mercurial 3.4 и 3.5 имеют довольно значительные улучшения производительности для кеша тегов (а 3.3 - регрессия производительности). –
Не обращайте внимания на мой предыдущий вопрос, я неправильно понял, что вы имели в виду под «лаг». Если в тегах 'hg 'отсутствует то, что находится в вашем текущем' .hgtags' (и тег не был удален в другой ветке или в другой редакции - так вы иногда можете законно видеть тег в '.hgtags', но а не в 'hg tags'), это будет означать, что есть ошибка. FYI, Mercurial использует кеш, чтобы избежать довольно дорогостоящих вычислений, и обновляет их по мере поступления новых коммитов; если есть ошибка, скорее всего, это будет проблема с кешем тегов. –