Почему "hg mv" (mercurial) по умолчанию не перемещает историю файлов?

Я знаю как это сделать, я просто не могу понять, почему hg mv также не перемещает историю файлов по умолчанию.

Кажется глупым обязать меня запускать hg log --follow до hg mv. Это запоминает мне время с cvs, когда вам нужно было удалить и добавить файл, используя две разные операции и проиграв историю таким же образом.

IMHO, если бы я просто использовал встроенный mv, который бы мог потерять историю, но я использую hg mv, и, думая о самом репозитории, не имеет смысла потерять историю by default, Там должно быть hg mv --no-follow, а не наоборот.

Это неинтуитивно. Кто-нибудь здесь имеет разумное объяснение этого поведения? Является ли это ошибкой по дизайну или действительно есть веская причина для этого? Возможно ли это сделать --follow по умолчанию, когда используется hg mv?

Ответ 1

Вы можете изменить поведение журнала по умолчанию: в ~/.hgrc(или где-то/Mercurial.ini) добавьте

[alias] 
log = log -f 

Я читал, что появление журнала - причина скорости. Перемещение не является действительно "первым уровнем" в Mercurial. Это копия + удаление (это по сравнению с Bazaar, где move/rename является "первым уровнем", но у которого нет копии с сохранением истории).

Ответ 2

Вы не знаете, как это сделать. hg log --follow влияет на отображение журнала, а не на то, как выполняется фактическое перемещение. По умолчанию отображается история имени файла. --follow следует за именами и копиями. Это соответствует тому, как Mercurial внутренне реализуется.

Нет никакой причины запуска hg log --follow до hg mv.

Ответ 3

Ответ @xantos теперь устарел. Правильный способ обновления файла hgrc:

[alias]
log = log -f