Mercurial помечает неизмененные файлы как измененные в рабочем каталоге и не может вернуться
Наша команда использует TortoisHg 2.0.5 в Windows, и после обновления списка файлов в рабочем каталоге он иногда (по крайней мере, один раз в день:(() показывает список неизмененных файлов как измененный. Сравнение вручную не показывает никаких изменений в коде, строке разрывы также равны. Возврат этих "fantom" файлов не дает результата. Есть два способа решения этой проблемы:
- Отключение расширения eol и возврат файлов,
- Вручную удаляя файлы и обновляя их из головы ревизии.
Это действительно раздражает делать это каждый день (дважды... три раза... в день), особенно на больших ревизиях! Пожалуйста, помогите найти причину проблемы.
1 ответ
Первый вопрос: работаете ли вы исключительно под Windows, и если да, уверены ли вы, что eol
расширение?
Что касается проблемы, которую вы видите, из этой серии писем, это выглядит как eol
расширение использует LF
в качестве кодировки репозитория по умолчанию, которая, вероятно, заставляет Mercurial думать, что ваши созданные на Windows файлы с CRLF-изменением изменились. Чтобы изменить это, добавьте следующий раздел в ваш .hgeol
файл:
[repository]
native = CRLF
Я попробовал следующий тест, похожий на тот, что в моей ссылке (с eol
расширение включено):
> hg init eols
> cd eols
# used notepad++ to save a test file "foo" with Windows line endings (CRLF)
> hg commit -Am "added foo with CRLF"
> hg status
> echo [patterns] > .hgeol
> echo ** = native >> .hgeol
> hg status
M foo # spurious difference!
? .hgeol
> echo [repository] >> .hgeol
> echo native = CRLF >> .hgeol
> hg status
? .hgeol