Usando o filterdiff para excluir um diff

1

Eu tenho um grande patch ( foo ), consistindo em diffs de muitos arquivos. Eu quero excluir um diff específico (correspondente a um único arquivo) deste patch. O começo deste diff é assim:

diff --git a/business/smyt/scans/deboo.2015.02.11.pdf b/business/smyt/scans/deboo.2015.02.11.pdf
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4d5780b2dc843386b9641f4cb42a4ba4a7996cae
GIT binary patch
literal 106388

Estou tentando o seguinte comando. O Filterdiff está disponível no Debian, pelo menos, no pacote patchutils .

filterdiff --exclude='*/deboo.2015.02.11.pdf' foo > newfoo

mas retorna o mesmo arquivo. Este é provavelmente um erro do usuário. A página man ( man filterdiff ) diz:

-x PATTERN, --exclude=PATTERN
       Exclude files matching PATTERN. All other lines in the input are displayed.

Isso provavelmente requer o uso de expressões regulares, algo com o qual nunca me senti à vontade.

Outro método de fazer isso também seria bom. Eu poderia editar manualmente o patch como último recurso, mas os métodos automatizados geralmente são melhores.

    
por Faheem Mitha 07.03.2015 / 07:35

1 resposta

1

Pode ser que o filterdiff não saiba como lidar com a opção git, já que seu PATTERN parece ok:

$ mkdir a b
$ seq 5 > a/file1
$ rm file1 
rm: remove regular file ‘file1’? y
$ seq 5 > b/file2
$ seq 4 > b/file1
$ seq 4 > a/file2
$ diff -r -u a b
diff -r -u a/file1 b/file1
--- a/file1 2015-03-07 09:24:15.548744157 +0100
+++ b/file1 2015-03-07 09:24:37.804744069 +0100
@@ -2,4 +2,3 @@
 2
 3
 4
-5
diff -r -u a/file2 b/file2
--- a/file2 2015-03-07 09:24:42.448744051 +0100
+++ b/file2 2015-03-07 09:24:30.684744097 +0100
@@ -2,3 +2,4 @@
 2
 3
 4
+5
$ diff -r -u a b > my.patch
$ wc my.patch
 16  46 302 my.patch
$ filterdiff --exclude='*/file2' my.patch | wc
      9      28     178
$ filterdiff --exclude='*/file2' my.patch 
diff -r -u a/file1 b/file1
--- a/file1 2015-03-07 09:24:15.548744157 +0100
+++ b/file1 2015-03-07 09:24:37.804744069 +0100
@@ -2,4 +2,3 @@
 2
 3
 4
-5
diff -r -u a/file2 b/file2
    
por 07.03.2015 / 09:37

Tags