Рекурсивный git update-index -assume-неизменный

Я пытаюсь запустить следующее:

git update-index --assume-unchanged myFolderToIgnore

Где myFolderToIgnore - это папка. Однако он не может сказать, что его "не удалось" отметить.

Итак, я попробовал:

git update-index --assume-unchanged myFolderToIgnore/

Какой GIT отвечает Ignoring path myFolderToIgnore/, но ничего не делает (он все еще видит мои изменения и пытается их проверить).

В конце концов мне пришлось войти и вручную пометить каждый отдельный файл как неизменный. Что мне здесь не хватает?

Ответы

Ответ 1

update-index - это внутренняя команда сантехники и, таким образом, не такая удобная, как настоящие интерфейсные команды. Вам придется самому обработать бит рекурсии:

git ls-files -z myFolderToIgnore/ | xargs -0 git update-index --assume-unchanged

Ответ 2

Я столкнулся с этой проблемой, когда в моей папке было сотни тысяч файлов и тысячи папок.

Это привело к тому, что "Список аргументов слишком длинный".

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

find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --assume-unchanged" \;