Подтвердить что ты не робот

Сделать git игнорировать изменения даты изменения, если содержимое файла остается неизменным

У меня есть скрипты python, которые генерируют и изменяют разные xml файлы. Они работают так, что они открывают файл, создают на его основе объект ElementTree, при необходимости пытаются изменить содержимое объекта и сохранять эти объекты в исходных файлах.

Дело в том, что иногда они не меняют содержимое файла даже немного. Но дата изменения файла изменяется.

Git, с другой стороны, рассматривает этот файл как "измененный", потому что он замечает, что дата изменения изменилась. Хотя это не сделает различий (очевидно).

citool действует сумасшедшим (предупреждения о том, что дата изменилась, но сам файл не имеет, пытается выполнить повторное сканирование и снова показывает их как "измененные" )

У меня нет доступа для изменения этих скриптов python, поэтому их переписывание не является вариантом (они хранятся и часто изменяются в отдельном репо). Есть ли способ сообщить git игнорировать изменения даты изменения для определенной папки? Это просто очень раздражает просмотр десятков "измененных" файлов, когда на самом деле только один из них был действительно изменен.

Я знаю, что могу скомпоновать все файлы, а затем отключить их, но это требует нескольких дополнительных действий, которые я бы хотел опустить. И иногда это просто мешает нормальному рабочему процессу git.

Обновление: git citool error reads (quote): "Не обнаружено различий. <file> не имеет изменений. Дата изменения этого файла была обновлена ​​другим приложением, но содержимое в файле не было изменено. Сканирование будет автоматически запущено, чтобы найти другие файлы, которые могут иметь одно и то же состояние".

Затем после повторного сканирования все файлы с измененной подделкой появятся снова.

git статус также показывает эти файлы как "измененные"

4b9b3361

Ответ 1

Вы можете сделать git add для всех затронутых файлов, после чего он перестает отображать их как измененные в git status (и на самом деле не создает их для фиксации, если нет изменений). По крайней мере, это сработало для меня (я использую git 2.8.1).

Ответ 2

Git не сообщает об изменениях времени модификации.

$ git init
Initialized empty Git repository in /home/choroba/...
$ echo > a
$ git add a
$ git commit -m init
[master (root-commit) d686390] init
 1 file changed, 1 insertion(+)
 create mode 100644 a
$ touch -m a
$ git status
On branch master
nothing to commit, working directory clean