То, что состоит в том, чтобы обработать корректный путь, вложило репозитории Hg с Mercurial/TortoiseHg?

Я продолжаю бороться, как правильно отследить вложенное использование репозиториев 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 папки.

22
задан pixelastic 4 March 2010 в 14:21
поделиться

2 ответа

Наконец-то мне удалось заставить это работать так, как мне хотелось бы. Я использую 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.
  • После этого я смог зафиксировать либо основное корневое репо, либо репо plugin1 независимо

Обратите внимание, что дополнительные шаги remove и commit требуются только в том случае, если новое клонированное репо имеет то же имя, что и уже отслеживаемый каталог.

18
ответ дан 29 November 2019 в 05:36
поделиться

Вы должны попробовать использовать:

  • расширение Forest или
  • (лучший выбор, потому что официально в Hg): функцию Subrepo

Subrepositories - это функция, которая позволяет вам рассматривать коллекцию репозиториев как группу.
Это позволит вам клонировать, коммитить, проталкивать и вытаскивать проекты и связанные с ними библиотеки как группу.

5
ответ дан 29 November 2019 в 05:36
поделиться
Другие вопросы по тегам:

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