Mercurial: как переместить проект / модуль, но сохранить историю изменений - PullRequest
1 голос
/ 29 ноября 2011

Рассмотрим следующий многомодульный проект (в пределах одного репозитория):

Module A (i.e. parent)
  - Module 1 (various core stuff)
    - Module i
  - Module 2 (non-core, depends on 1)
    - Module ii
    - Module iii

(Причина такой установки в том, что она позволяет некоторым разработчикам просто работать над отдельными модулями (например, * 1004).* и его дочерние элементы), в то время как другие разработчики могут работать над всей кодовой базой (например, A и его дочерние элементы).

Давайте теперь предположим, что Module ii был переклассифицирован в core и нуждается вчтобы быть перемещенным в Module 1.

Я мог бы просто обработать это, переместив Module ii из Module 2 в Module 1. Однако, Mercurial обрабатывает это как удаление (из 2) и добавление (в 1), и, таким образом, мы потеряли бы историю изменений с ii до переезда (я знаю, что на самом деле мы не «потеряем» это, так как она все еще будет доступна в Mercurial; однако, она не будетбыть легкодоступным по отношению к файлам в новом месте).

Как я могу переместить файлы и заставить Mercurial переместить историю изменений с этими файлами?

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Можно преобразовать эти пары добавления / удаления в «переименования», используя hg mv, если они остаются в том же хранилище.

1 голос
/ 19 мая 2014

Информация есть и не потеряна.Вам просто нужно использовать флаг -f, - follow для журнала hg.(Это то, на что указывает @freixo в посте Почему 'hg mv' (mercurial) не перемещает историю файла по умолчанию? )

0 голосов
/ 10 февраля 2014

Почему бы вам просто не изменить ваш ~ / .hgrc (или Mercurial.ini), выполнив то, что здесь говорит xanatos: Почему 'hg mv' (mercurial) не перемещает историю файла по умолчанию?

...