Mercurial: преобразование существующих папок в суб-репо - PullRequest
2 голосов
/ 26 сентября 2011

У меня есть хранилище Mercurial, которое выглядит так:

SWClients/
  SWCommon
  SWB
  SWNS

... где SWCommon - это библиотека, общая для двух других проектов. Теперь я хочу преобразовать SWCommon в под-хранилище SWClients, поэтому я следовал инструкциям здесь и здесь . Однако, в отличие от примера в первой ссылке, я хочу, чтобы мой суб-репозиторий имел то же имя, что и папка в начале. Подробно вот что я сделал:

Создайте файл map.txt следующим образом

include SWCommon
rename SWCommon .

Создайте файл .hgsub следующим образом

SWCommon = SWCommon

Затем запустите

$ hg --config extensions.hgext.convert= convert --filemap map.txt . SWCommon-temp
...lots of stuff happens...

Тогда

$ cd SWCommon-temp
$ hg update
101 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ..
$ mv SWCommon SWCommon-old
$ mv SWCommon-temp SWCommon
$ hg status
abort: path 'SWCommon/SWCommon.xcodeproj/xcuserdata/malte.xcuserdatad/xcschemes/SWCommon.xcscheme' is inside nested repo 'SWCommon'

... это действительно так, но почему это причина для прерывания? Другая странная вещь заключается в том, что если я не сделаю последнее «mv» выше и выполню «hg status», я получу множество «отсутствующих» файлов в SWCommon, как и следовало ожидать. Пример в ссылке никогда не делает это далеко и в основном останавливается на обновлении hg выше? Как заставить это работать на практике?

1 Ответ

3 голосов
/ 24 января 2012

В настоящее время невозможно.Вы можете создать новый репозиторий, преобразовав исходный, например:

$ hg --filemap excludemap.txt SWClients SWClients-without-SWCommon

с помощью excludemap.txt, например:

exclude "SWCommon"

, а затем добавьте туда подпункт.

См. Ветку списка рассылки , в которой обсуждается эта проблема.

...