Как переименовать каталог в Mercurial и продолжить отслеживать все изменения файлов

Я решил переименовать некоторые каталоги в моем пакете Python для дома / хобби ( doc в docs , test to tests , util to utils ) потому что, Теперь, когда я подумал об этом, я думаю, что новые имена более уместны. Сейчас я считаю, что если контейнеры названы в честь их содержимого, их имена должны быть существительными во множественном числе.

Теперь, когда я готов к следующему hg commit , мне интересно, как сообщить Mercurial об этих изменениях имени каталога. Я новичок в программном обеспечении RCS в целом и использую Mercurial всего пару месяцев.Когда я запускаю hg status , он показывает, что все файлы в этих каталогах удаляются и добавляются, поэтому я боюсь, что если я просто сделаю hg addremove , я потеряю всю историю изменений для файлов в этих каталогах, или, по крайней мере, история изменений станет фрагментированной и не отслеживаемой. Я встречал команду hg rename , но в документации обсуждается ее использование только для отдельных файлов, а не для каталогов.

После дальнейшего чтения в «Окончательном руководстве» Брайана О'Салливана выяснилось, что, возможно, переименование может относиться к каталогам.

Вот что я решил попробовать:

hg rename --after doc docs
hg rename --after test tests
hg rename --after util utils
hg status
hg addremove

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

36
задан Don O'Donnell 21 August 2010 в 00:03
поделиться

2 ответа

Поскольку вы уже переименовали каталоги, все в порядке. (Это избавило бы вас от ручного шага, если бы вы позволили Mercurial переименовать их для вас: hg rename doc docs и т. д. вместо того, чтобы делать это самостоятельно, а затем сообщать об этом Mercurial).

Если у вас нет других файлов для возврата, hg addremove не нужен. Посмотрите на вывод hg stat, и вы увидите только строки, начинающиеся с «R» (для doc/*, test/* и util /*) и 'A' (для docs/* и т. д.)

Наконец, не забудьте зафиксировать изменения.

EDIT: Забыл сказать... используйте hg log --follow для отслеживания изменений при переименовании.

39
ответ дан 27 November 2019 в 05:51
поделиться

Mercurial не имеет понятия о каталогах; он обрабатывает все (файлы и каталоги) как файлы. Кроме того, я обычно никогда не переименовываю файлы или каталоги вручную; Я просто использую

hg rename old-name new-name

Я предлагаю вам сделать это тоже.

Mercurial предлагает функцию отслеживания переименований, что означает, что Mercurial может отслеживать полную историю файла, который был переименован. Если вы переименуете это вручную, это будет невозможно.

Однако, поскольку вы уже переименовали их вручную, вам необходимо использовать аргумент - follow вместе с hg log , чтобы отслеживать изменения файлов в истории.

Лично я бы просто использовал hg rename , и это должен быть предпочтительный метод.

16
ответ дан 27 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

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