Как создать файл diff или patch, показывающий только различия файлов, включенных в другой файл заплатки? - PullRequest
0 голосов
/ 04 мая 2020

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

Это полезно когда вам нужно разбить определенные c файлы различий.

1 Ответ

0 голосов
/ 04 мая 2020

Поэтому, работая над большим проектом компании, который требовал разбить проблему на несколько заявок, я обнаружил, что мне нужно создавать отдельные файлы diff / patch для каждого заявки, хотя я работал над одной веткой с несколькими файлами. меняется. Каждый файл исправления должен был содержать только различия для определенных c файлов, которые вы можете сделать с:

git diff master FILENAME_X FILENAME_Y FILENAME_Z (etc.)

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

Следующая команда создаст файл diff / patch из всех файлов, включенных в другой файл патча:

`cat NAME_OF_INPUT_DIFF.diff | grep "+++" | awk -F "+++ b/" '{if (NR == 1)printf "git diff master " $2; else printf " " $2}'` > NAME_OF_OUTPUT_DIFF.diff

cat NAME_OF_INPUT_DIFF.diff | grep "+++" разбивает предыдущий diff только на строки с именами файлов, которые были добавлены / изменены, затем awk -F "+++ b/" разбивает это на только проанализированные имена файлов, удаляя предыдущие символы. Остальное создает длинную команду git для генерации различий между указанными c файлами, а завертывание всех в обратные метки делает ее вычисляемой при выполнении. Затем > NAME_OF_OUTPUT_DIFF.diff выводит полученный diff в файл.

В любом случае, я надеюсь, что это поможет кому-то, как это сделал я! Совершенно экономит время.

...