Вы слышали правильно, вроде.
Git работает с содержимым файлов, а не с самими файлами, поэтому переименования для него технически бессмысленны. Для git переименование выглядит так, как будто файл A исчез, а файл B появился с тем же содержимым, что и A. Но git на самом деле довольно хорошо понимает, когда файл был фактически переименован.
Попробуйте: переименуйте файл, затем запустите 'git rm oldname' и 'git add newname', чтобы сказать git о необходимости внесения изменений, а затем запустите 'git status', чтобы увидеть, что думает Git о своих действиях - вы увидите что он говорит вам, что файл был переименован. Я не уверен, что это что-то значит позже. Посмотрите на коммит с помощью 'git show', и вы не увидите упоминаний о переименовании, просто группа строк, удаленных из одного пути и добавленных в другой.
Кроме того, вы также можете использовать команду 'git mv' для переименования файла. Он не меняет то, как git видит операцию, он просто эффективно выполняет «mv oldname newname», «git rm oldname» и «git add newname» за один шаг.
Обзор Mercurial см. tonfa's answer .
С другой стороны, SVN не может обнаружить переименования, но необходимо сообщить о них командой 'svn mv'. Однако, когда ему сообщают, он отслеживает переименования как изменения «первого класса», поэтому при последующем просмотре журнала изменений вы увидите, что это было переименованием.
Я бы не советовал выбирать SVN вместо git или mercurial на основе этой функции. Есть намного большие и более важные различия между инструментами. Сначала я бы решил, хотите ли вы распределенную систему контроля версий (git или mercurial) или централизованную систему контроля версий (svn).