Как Mercurial сообщает, что файл был изменен? - PullRequest
4 голосов
/ 18 мая 2011

Как Mercurial сообщает, что файл был изменен?

Причина, по которой я спрашиваю, заключается в том, что когда я запускаю hg status, он говорит мне, что несколько файлов модифицируются.Однако, когда я запускаю hg diff, в отчет не вносятся изменения.

У меня есть теория, почему это происходит: ( но я не уверен )

Я использую NetBeans со встроенной поддержкой Mercurial. Когда я редактирую файл, он показывает его как измененный, хотя если я отменяю (а не возвращаю) эти изменения и сохраняю его, NetBeans сообщает мне, что локальных изменений нет.Таким образом, я предполагаю, что NetBeans использует diffs для проверки изменений, в то время как Mercurial использует что-то еще, например дата-модификации .

Это правильно или это причина?

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Mercurial не использует дату модификации для определения статуса.Это можно проверить с помощью простого эксперимента:

hg init
echo "This is a test" > test.txt
hg commit -Am "commit"
touch test.txt
hg status

Код, который выполняет проверку состояния, находится в dirstate.py.Если dirstate не уверен в статусе файла (например, из-за того, что отличается только время модификации, он передает его до localrepo.status для дальнейшего анализа, как видно здесь .

hg help status текст имеет некоторые подсказки, которые могут помочь:

состояние может показаться не соответствующим diff, если разрешения изменены или произошло слияние. Стандартный формат diff не сообщает о разрешенииИзменения и различия только сообщает об изменениях относительно одного родителя слияния.

Когда вы запускаете hg diff, вы указываете какие-либо параметры командной строки?

2 голосов
/ 18 мая 2011

Возможно ли изменить права доступа к файлу?Попробуйте hg diff --git, который показывает расширенные различия в стиле git, которые поддерживают разрешения и двоичные файлы.По умолчанию hg diff показывает только доступные для исправления различия, которые не показывают изменения разрешений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...