Это возможно возможно, но немного сложно. Вы должны написать свою собственную утилиту tag
(возможно, в качестве расширения Mercurial), чтобы помочь собрать необходимую информацию и выполнить дополнительные вызовы к hg tag
. Однако я не очень разбираюсь в API при написании расширения, поэтому любые идеи, которые я предлагаю, будут основаны на непосредственном вызове hg
с помощью команд.
По умолчанию, когда вы фиксируете в главном репозитории, суб-репозитории фиксируются первыми. Затем он берет новый идентификатор набора изменений для каждого вложенного отчета и помещает их в файл .hgsubstate
в формате, подобном следующему:
77ba00000fe8e9ca033d97dc07b85a50dd106837 nested
Рекурсивное тегирование должно было бы получить содержимое файла .hgsubstate
, как это было в наборе изменений, который вы тегируете в основном репозитории. Вы можете подумать о hg revert
, но это было бы плохой идеей, поскольку это могло бы легко испортить ваш рабочий каталог (hg
не нравится делать это на .hgsubstate
в любом случае). Лучше всего для этого сделать hg export
для этой ревизии и проанализировать полученный дифференциал для строк +
в файле .hgsubstate
.
Тогда вы бы взяли идентификатор набора и имя подотчета у каждого из них, чтобы вызвать hg -R <subrepopath> tag -r <id> <tag>
. И, конечно же, наконец, отметьте основной репо.
Есть все еще потенциальные проблемы с этим, вещи, о которых вы должны будете знать или понять, как жить. Например: что произойдет, если вы совершите сделку с основным репо, но не с одним или несколькими подпунктами? Теперь у вас есть несколько наборов изменений в главном репо, где .hgsubstate
перечисляет один и тот же идентификатор набора изменений в этом репо. Таким образом, если вы пометите оба в основном репо, у набора изменений в подпредставлении будет 2 тега.
Я использую TortoisHg 2.0.5 с Mercurial 1.8.4. Пометка субпозиториев сама по себе не вызывает необходимости фиксации в основном репо, в основном она должна работать нормально.