Почему 'hg mv' (mercurial) не перемещает историю файла по умолчанию? - PullRequest
38 голосов
/ 10 марта 2011

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

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

ИМХО, если бы я просто использовал встроенный mv, было бы нормально потерять историю, но я использую hg mv, и, думая о самом хранилище, не имеет смысла терять историю by default.Там должно быть hg mv --no-follow, а не наоборот.

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

Ответы [ 3 ]

34 голосов
/ 10 марта 2011

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

[alias] 
log = log -f 

Я читал, что внешний вид журнала предназначен для скоростипричина.Перемещение не является действительно операцией «первого уровня» в Mercurial.Это копия + удаление (это по сравнению с Bazaar, где перемещение / переименование является операцией «первого уровня», но у которой нет копии с сохранением истории).

33 голосов
/ 10 марта 2011

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

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

2 голосов
/ 12 августа 2014

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

[alias]
log = log -f
...