Я продолжаю бороться, как правильно отследить вложенное использование репозиториев TortoiseHg.
У меня есть основной репозиторий, который отслеживает мой целый проект. Этот проект содержит несколько небольших плагинов, которые хранятся в плагины / подкаталог.
Я хотел бы отследить каждый плагин независимо (фиксация и продвижение к BitBucket для каждого из них) в то время как все еще способность сделать "целую" фиксацию моего проекта, включая изменения сделанной к плагинам и продвижению его к другому местоположению (не BitBucket).
Что я сделал, до сих пор создает новый repo для каждого из моих плагинов. Я могу фиксировать и продвинуть их к BitBucket легко. Но когда я пошел для фиксации моего "основного" репозитория, TortoiseHg отображает сообщение об ошибке, заявляя это abort: path 'mainrepo\\plugins\\plugin1\\plugin1.php' is inside repo 'mainrepo\\plugins\\plugin1'
.
Я вижу, что делаю что-то не так, но я не могу сказать что.
Я использую ночной из Подвижного и 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
Я перешел к приложению/плагинам и клонировал плагин (названный plugin3) от BitBucket здесь. Я затем создал .hgsub файл в корне и добавил app/plugins/plugin3 = app/plugins/plugin3
к нему. Я затем смог фиксировать свой целый каталог.
Но затем я пытался захватить последнюю версию plugin1 от BitBucket, таким образом, я перешел к приложению/плагинам, удалил plugin1/папку и клонировал plugin1 от BitBucket. Я затем добавил app/plugins/plugin1 = app/plugins/plugin1
к .hgsub, но когда я пытался фиксировать его, мной встретили abort: path 'app/plugins/plugin1/file1.php' is inside repo 'app\\plugins\\plugin1'
Проблема, кажется, стреляет, когда мой subrepo содержит то же имя как каталог, уже прослеженный Hg в плагинах / каталог.
Что я делаю неправильно? Я должен добавлять/редактировать что-то специальное в .hg моих плагинов?
Обновление
Мне наконец удалось заставить это прокладывать себе путь, я хочу.
Я должен был "вручную" сказать Подвижный удалять plugins/plugin1, plugins/plugin2 каталоги, фиксировать изменение, затем клонировать назад plugin1 и plugin2 от BitBucket, добавить app/plugins/plugin1 = app/plugins/plugin1
к .hgsub и фиксации все. Это работало.
Важный шаг фиксировал удалив plugin1/plugin2 папки.
Наконец-то мне удалось заставить это работать так, как мне хотелось бы. Я использую TortoiseHg на winXP, поэтому я не смогу сказать, какие вызовы hg были сделаны внутри, но я не думаю, что здесь используется что-то причудливое.
Я начал с существующего репозитория, внутри которого у меня был каталог plugins/
, заполненный каталогами plugin1/
, plugin/2
(не репозитории, а простые каталоги).
У меня также были эти плагины онлайн, размещенные на BitBucket.
plugins/
, щелкнул правой кнопкой мыши на plugin1/
, TortoiseHg => Remove Files
. Hg Commit
plugins/
, щелкнул правой кнопкой мыши, TortoiseHg => Clone...
, выбрал http адрес плагина на bit bucket (http://bitbucket.org/username/plugin1/
) и нажал Done
.hgsub
и добавил в него строку plugins/plugin1 = plugins/plugin1
. Обратите внимание, что дополнительные шаги remove
и commit
требуются только в том случае, если новое клонированное репо имеет то же имя, что и уже отслеживаемый каталог.
Вы должны попробовать использовать:
Subrepositories - это функция, которая позволяет вам рассматривать коллекцию репозиториев как группу.
Это позволит вам клонировать, коммитить, проталкивать и вытаскивать проекты и связанные с ними библиотеки как группу.