Мы хотим запустить git filter-branch
над большой базой данных PHP. Поскольку у нас более 21 тыс. Коммиттов, phpcbf
хочет отформатировать всю кодовую базу каждый фиксатор filter-branch
. Можно ли получить только файлы, которые были изменены для каждой фиксации, и форматировать их конкретно? Что-то вроде ...git filter-branch получить только измененные файлы?
git filter-branch --tree-filter \
'FILES=$(<something> | grep .php) php /usr/local/bin/phpcbf.phar $FILES || true'
решение Эллиот получил меня 98% пути. Кажется, что какое-то поведение в 'git diff' во время ветвления фильтра изменилось (я запускаю git 2.10.2). Он постоянно сравнивался с моей последней версией HEAD, а не с фильтрованным сообщением. Мне удалось немного изменить код Эллиота, чтобы он работал. Вместо 'git diff --cached --name-status' во время фильтра, я использовал' git show $ GIT_COMMIT - имя-статус'. '$ GIT_COMMIT' автоматически устанавливается на каждом шаге' filter-branch'. –