Я не могу заставить Tortoisehg (1.0) работать с subrepos
У меня есть структура каталогов как это:
root
.hg
.hgsub
.hgsubstate
Customer1
Project1
.hg
foo.txt
Project2
.hg
Customer2
Project3
.hg
.hgsub файл под корнем похож
Customer1\Project1=Customer1\Project1
Customer1\Project2=Customer1\Project2
Customer2\Project3=Customer2\Project3
Если изменяют файл Customer1\Project1\foo.txt
и фиксация от корня это работает
>hg ci -m "command line commit"
committing subrepository customer1\project1
в Tortoisehg customer1\project1
отображен с состоянием S
(subrepo), но при фиксировании я получаю сообщение
abort: customer1/project1: no match under directory!
Разве этот сценарий не поддерживается, или я делаю что-то не так?
В документе говорится:
"TortoiseHg 1.0 представил элементарную поддержку подрепозиториев, и только в фиксации / инструмент состояния. Когда Подвижный рассматривает subrepo как грязный, это появится в инструменте фиксации как специальная запись в списке файлов с состоянием S. Если subrepo включен в список файлов фиксации, subrepo фиксируется наряду с другими изменениями, обновляя .hgsubstate файл в основном корневом каталоге хранилища".
Я думаю, что ваша проблема заключается в указании "Customer1\Project1" как вложенного репозитория, потому что Customer1 тоже должен быть вложенным репозиторием.
Customer1 и Customer2 должны иметь файлы '.hgsub', описывающие подрепозитории внутри них (Project1/2)
Переделайте ваш репозиторий Customer1 в другом месте и клонируйте в него Project1 и Project2. Добавьте записи Project1 и Project2 в файл '.hgsub' в Customer1.
Затем сделайте то же самое для репозитория Customer2.
Помните, что вложенные хранилища могут сами быть вложенными, поэтому создайте 'root' хранилище, а затем клонируйте в него Customer1 и Customer2, не забыв добавить записи в .hgsub файл.
Выполните коммит 'root' и все будет в порядке.
Главное - перенести изменения из всех экземпляров субрепозитория в его клон-мастер, чтобы другие клоны, включающие этот субрепозиторий, могли получить эту ревизию при необходимости.
У меня все мастер-репозитории находятся в одной родительской папке на моей машине, поэтому простановка относительных путей в файлах '.hgsub', таких как '../Project1' или '../Customer1', является простым способом передачи изменений моим локальным клонам с нашего центрального сервера.
Что касается использования TortoiseHG, вы будете в порядке с v1.0, поскольку он будет создавать и управлять файлом '.hgsubstate' во вложенном репозитории при условии, что вы уже создали файл '.hgsub'!