tortoisehg и subrepos

Я не могу заставить 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 файл в основном корневом каталоге хранилища".

9
задан adrianm 20 March 2010 в 19:51
поделиться

1 ответ

Я думаю, что ваша проблема заключается в указании "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'!

2
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: