Я решил переименовать некоторые каталоги в моем пакете 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, и если нет, то как мне это сделать.
Поскольку вы уже переименовали каталоги, все в порядке. (Это избавило бы вас от ручного шага, если бы вы позволили Mercurial переименовать их для вас: hg rename doc docs
и т. д. вместо того, чтобы делать это самостоятельно, а затем сообщать об этом Mercurial).
Если у вас нет других файлов для возврата, hg addremove
не нужен. Посмотрите на вывод hg stat
, и вы увидите только строки, начинающиеся с «R» (для doc/*
, test/*
и util /*
) и 'A' (для docs/*
и т. д.)
Наконец, не забудьте зафиксировать изменения.
EDIT: Забыл сказать... используйте hg log --follow
для отслеживания изменений при переименовании.
Mercurial не имеет понятия о каталогах; он обрабатывает все (файлы и каталоги) как файлы. Кроме того, я обычно никогда не переименовываю файлы или каталоги вручную; Я просто использую
hg rename old-name new-name
Я предлагаю вам сделать это тоже.
Mercurial предлагает функцию отслеживания переименований, что означает, что Mercurial может отслеживать полную историю файла, который был переименован. Если вы переименуете это вручную, это будет невозможно.
Однако, поскольку вы уже переименовали их вручную, вам необходимо использовать аргумент - follow
вместе с hg log
, чтобы отслеживать изменения файлов в истории.
Лично я бы просто использовал hg rename
, и это должен быть предпочтительный метод.