Mercurial помечает неизмененные файлы как измененные в рабочем каталоге и не может вернуться

Наша команда использует TortoisHg 2.0.5 в Windows, и после обновления списка файлов в рабочем каталоге он иногда (по крайней мере, один раз в день:(() показывает список неизмененных файлов как измененный. Сравнение вручную не показывает никаких изменений в коде, строке разрывы также равны. Возврат этих "fantom" файлов не дает результата. Есть два способа решения этой проблемы:

  1. Отключение расширения eol и возврат файлов,
  2. Вручную удаляя файлы и обновляя их из головы ревизии.

Это действительно раздражает делать это каждый день (дважды... три раза... в день), особенно на больших ревизиях! Пожалуйста, помогите найти причину проблемы.

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
Другие вопросы по тегам