como incluir um novo arquivo em um patch

9

Eu tento fazer um patch como apresentado aqui .
Digamos que eu tenha dois diretórios pp1(modified version)e pp0(clean version)crie um arquivo de correção pp0.patchcom o diffcomando:

 diff -crB pp0 pp1 > pp0.patch

O problema é que, se houver um arquivo apenas no pp1, ele não será incluído no patch. Como contornar isso?

UPDATE :
Primeiramente, mudo para o diretório pp0 e testo se o patch será bem-sucedido

  patch --dry-run -p1 -i /path-to-pp0.patch

Embora eu tenha adicionado --new-fileao diffcomando, apenas aqueles que pp1não estão listados no resultado

ATUALIZAÇÃO :
corrigi acidentalmente o arquivo errado,

  diff -crb --new-file pp1 pp0 > pp0.patch

ou

  diff -crNb pp1 pp0 > pp0.patch

vai fazer

manuzhang
fonte

Respostas:

9

Você deve conseguir fazer isso usando o --new-fileswitch. Retirado da página do manual diff :

 --new-file
          In directory comparison, if a file is found in only  one  direc-
          tory, treat it as present but empty in the other directory.

Tente o seguinte:

diff -crB --new-file pp0 pp1 > pp0.patch
pootzko
fonte
Eu não sei se eu remendado-lo corretamente, mas o novo arquivo não está incluído
manuzhang
meu pedido de desculpas, que as obras
manuzhang
3

A resposta imediata :,diff -N como explicado por pootzko . Você verá que muitos patches por aí são criados por diff -urN.

O que pode melhorar sua vida: comece a usar uma ferramenta de controle de versão. Se você não conhece, comece com um dos três principais sistemas de controle de revisão distribuído , Bazaar , Git ou Mercurial . Faça o check-in da versão limpa, trabalhe, faça o check-in quantas vezes quiser e peça ao sistema de controle de versões uma diferença entre a versão limpa e o seu trabalho.

Gilles 'SO- parar de ser mau'
fonte
thx, desejo que eu poderia ter um na vida real e revertido para o passado, quando a cometer um erro :)
manuzhang