2010-10-16 1 views
3

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

ответ

12

patchutils содержит полезную утилиту lsdiff.

+1

Слишком плохо, что это не часть стандартного пакета патчей или diff. – Saustrup

2

grep '+++' mydiff.patch, похоже, делает трюк.

Я также могу использовать git diff --names-only, что, вероятно, лучший подход.

1
grep '+++' mydiff.patch|perl -pe 's/\+\+\+ //g' 

Детали:

мерзавец дифф производит вывод в формате

+++ b/file 

Так что, если вы используете Grep Натан предложил

grep '+++' mydiff.patch 

Вы будете иметь список затрагиваемых файлов, добавленных «+++» (3 символа плюс пробел).

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

grep '+++' mydiff.patch|perl -pe 's/\+\+\+ //g' 

Для патч-файлов, созданных с дифф -Naur, файл mydiff.patch содержит записи с именем файла и дату (это указывает на табулятора пробелам)

+++ b/file<tab>2013-07-03 13:58:45.000000000 +0200 

Чтобы извлечь имена файлов для этого используется

grep '+++' mydiff.patch|perl -pe 's/\+\+\+ (.*)\t.*/\1/g' 
Смежные вопросы