Mercurial Nested Repo Issue - PullRequest
       20

Mercurial Nested Repo Issue

2 голосов
/ 21 ноября 2011

Я случайно создал репо в подкаталоге другого репо

С тех пор суб-репо теперь содержит количество коммитов

Я осознал свою ошибку, когда попытался установить hg st в исходном (родительском?) Репо, и он пожаловался на наличие файла во вложенном репо

Что я хотел бы сделать, так это как-нибудь переместить историю суб-репо в родительский, а затем просто удалить суб-репо, чтобы у меня был только один репо

Структура dir выглядит следующим образом:

мой оригинальный репо:

core/

мои каталоги, содержащие код src, я пытаюсь контролировать версию:

core/src/
core/test/

мой случайный репо находится в:

core/src/

например. это я хочу нажать? / объединить? Поднимитесь на уровень в репо core/, затем просто убейте репо core/src/ (удалив .hg dir)

Я прочитал несколько обсуждений переполнения стека по этому вопросу, но, похоже, они пытаются решить более сложные сценарии суб-репо. Я надеюсь, что прямое (смею сказать, простое) решение может существовать?

Мне тоже не очень повезло с вики HG на этом

1 Ответ

4 голосов
/ 21 ноября 2011

Сохранение истории

В зависимости от используемой версии вы можете использовать расширение Transplant или Graft для достижения вашей цели.

Я никогда не делал этого, и у меня нет времени, чтобы проверить это заранее, но что-то вроде следующих шагов должно работать:

  1. Переместите свой фактический core/src/ dir куда-нибудь еще, например ~/temp.subrepo/
  2. Удалить подпункт из файла .hgsub
  3. Используйте расширение Преобразование , чтобы переименовать файлы в подпункте (краткий пример см. Ниже)
  4. Пересадка изменений: hg трансплантат -s ~ / temp.subrepo.converted / 0: tip

Чтобы преобразовать подпункт, вы можете использовать что-то вроде этого:

$ echo include . > /tmp/myfilemap
$ echo rename . src/ >> /tmp/myfilemap
$ hg convert --filemap /tmp/myfilemap ~/temp.subrepo/ ~/temp.subrepo.converted/

Как я уже сказал, я не уверен, что это будет работать из коробки, но это, по крайней мере, лидерство. Если у вас есть какие-либо проблемы, не стесняйтесь спрашивать.

История не имеет значения

Или, может быть, самое простое решение - просто удалить каталог .hg в подпункте, удалить любые упоминания о подпункте в файле .hgsub основного репо и просто добавить и зафиксировать файлы:

hg add core/src
hg commit 

Вы потеряете всю историю подпункта, но по крайней мере решение действительно простое.

...