Git фильтр табуляции в преобразование пространства, но файлы не отображаются как измененные - PullRequest
0 голосов
/ 22 февраля 2020

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

Я прочитал о функции фильтра git и подумал, что префект это позволит мне хранить мои файлы с отступами от вкладок, но pu sh они с отступами от пробелов, поэтому никто не будет раздражен , Сначала это работало, но потом я заметил, что, хотя сам файл не менялся, он сообщается как измененный (по состоянию git), так как символы отступа изменены (конечно). Это определенно не хорошо.

Есть ли способ получить это, что файлы каким-то образом фильтруются, но статус git не покажет их как измененные только из-за фильтрации? (например, применение фильтра только при нажатии и извлечении, а также добавление отступа в поле для вкладок в локальном репо)

Наличие отступа по пробелам раздражает, но наличие статуса git сообщает обо всех файлах как измененных, хотя они не отстойные, поэтому я надеюсь, что у кого-нибудь из вас есть идея, как обойти это.

С уважением

Редактировать: Дальнейшее объяснение: То, что я сделал, это настройка этих двух настроек :

git config --global filter.tabspace.clean 'expand --tabs=4' и

git config --global filter.tabspace.smudge 'unexpand --tabs=4 -a'

впоследствии я настроил git на использование этого фильтра (установив его в файле .gitattributes).

Это приводит к тому, что каждый раз, когда я выполняю фиксацию, применяется функция clean, а при извлечении - функцию smudge. Это приводит к тому, что файлы располагаются в моем локальном рабочем каталоге и вкладываются в хранилище. Недостатком этого (эффект, который я определенно не хочу) является то, что git status (и поэтому git add -A или git commit -a) думает, что переопределенные файлы изменены, и добавляет все файлы в коммит, что очень плохо.

Edit2: Этот вопрос определенно не о переписывании истории git, а о получении статуса git, игнорирующего изменения, внесенные только фильтром, или о том, чтобы фильтр работал между локальным репо и удаленным репо между локальным репо и рабочим деревом.

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