Некоторые выдержки из Mercurial в повседневном использовании (Mercurial: полное руководство) (копирование здесь, потому что, кажется, нет никакого способа дать удобную ссылку на конец страницы):
Вывод по умолчанию для команды hg diff
обратно совместим с обычной командой diff
, но это имеет некоторые недостатки.
Вывод hg diff выше непонятныхтот факт, что мы просто переименовали файл .Команда hg diff принимает опцию --git
или -g
, чтобы использовать более новый формат diff, который отображает такую информацию в более читаемой форме.
Эта опция также помогает в случае, который в противном случае может сбить с толку: файл, который кажется измененным в соответствии с hg status
, но для которого hg diff
ничего не печатает.Такая ситуация может возникнуть, если мы изменим права на выполнение файла .
Обычная команда diff не обращает внимания на права доступа к файлам, поэтому hg diff
по умолчанию ничего не печатает.Если мы добавим его с параметром -g
, он сообщит нам, что действительно произошло.
Подводя итог, команда hg diff
пропускает несколько видов информации об изменениях: атрибуты, разрешения, имена файлов и т. ДЭти изменения могут существовать, даже если у вас есть один родитель.И hg status
правильно учитывает все изменения.Чтобы увидеть, что произошло, используйте hg diff -g
.Это ответ на вопрос «что происходит?».
Похоже, обратная совместимость - это «почему».Я не уверен, но я предполагаю, что «нормальный diff» - это какой-то широко распространенный или встроенный инструмент Unix / Linux (судя по тому факту, что hg и git происходят из этого мира).