Я борюсь за то, как правильно отслеживать вложенные репозитории с помощью TortoiseHg.
У меня есть главный репозиторий, который отслеживает весь мой проект. Этот проект содержит несколько маленьких плагинов, которые хранятся в подкаталоге плагинов / *.
Я бы хотел отслеживать каждый плагин независимо (фиксируя и передавая в BitBucket для каждого из них), в то же время имея возможность сделать «целую» фиксацию моего проекта, включая изменения, внесенные в плагины и отправку их в другое местоположение (не BitBucket).
То, что я до сих пор делал, - это создание нового репо для каждого из моих плагинов. Я могу легко зафиксировать и отправить их в BitBucket. Но когда я пошел, чтобы зафиксировать свой «основной» репозиторий, TortoiseHg отображает сообщение об ошибке, говорящее, что abort: path 'mainrepo\\plugins\\plugin1\\plugin1.php' is inside repo 'mainrepo\\plugins\\plugin1'
.
Я вижу, что делаю что-то не так, но не могу сказать, что.
Я использую каждую ночь как Mercurial, так и TortoiseHg (ToirtoiseHg версии 0.9.3 + 237-ea50f793bbe4 и Mercurial-1.4.3 + 225-70dea42c9406) на WinXP. Я читал, что обработка subrepos была добавлена в эту сборку TortoiseHg, но я даже не уверен, что subrepos - это функция, которую я должен использовать здесь.
Обновление
Я добился определенного прогресса, но все еще не могу заставить его работать так, как мне хотелось бы.
Вот моя структура:
-- .hg
-- core
-- app
-- file.php
-- file.css
-- plugins
-- plugin1
-- file1.php
-- plugin2
-- file2.php
Я пошел в app / plugins и клонировал плагин (названный plugin3) из BitBucket здесь. Затем я создал файл .hgsub в корне и добавил app/plugins/plugin3 = app/plugins/plugin3
к нему.
После этого я смог зафиксировать весь каталог.
Но затем я попытался получить последнюю версию plugin1 из BitBucket, поэтому я пошел в app / plugins, удалил папку plugin1 / и клонировал plugin1 из BitBucket. Затем я добавил app/plugins/plugin1 = app/plugins/plugin1
в .hgsub, но когда я попытался зафиксировать его, меня встретили abort: path 'app/plugins/plugin1/file1.php' is inside repo 'app\\plugins\\plugin1'
Кажется, что проблема возникает, когда мой подпункт содержит то же имя, что и каталог, уже отслеженный Hg в каталоге plugins /.
Что я делаю не так? Должен ли я добавить / изменить что-то особенное в .hg моих плагинов?
Обновление
Наконец-то мне удалось заставить его работать так, как я хочу.
Мне пришлось «вручную» сказать Mercurial удалить каталоги plugins / plugin1, plugins / plugin2, зафиксировать изменение, затем клонировать обратно plugin1 и plugin2 из BitBucket, добавить app/plugins/plugin1 = app/plugins/plugin1
в .hgsub и зафиксировать все. Это сработало.
Важным шагом была фиксация после удаления папок plugin1 / plugin2.