como incluir um novo arquivo em um patch

8

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

 diff -crB pp0 pp1 > pp0.patch

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

UPDATE :
 Eu primeiramente mudo para o diretório de pp0 e testo se o patch será bem sucedido

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

Embora eu tenha adicionado --new-file ao comando diff , aqueles somente em pp1 não estão listados no resultado

UPDATE :
Eu acidentalmente corrigi o arquivo errado para

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

ou

  diff -crNb pp1 pp0 > pp0.patch

fará

    
por manuzhang 25.04.2012 / 18:58

2 respostas

8

Você deve conseguir fazer isso usando a opção --new-file . Retirado da página do diff man :

 --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 isto:

diff -crB --new-file pp0 pp1 > pp0.patch
    
por 25.04.2012 / 20:08
3

A resposta imediata: diff -N , como explicado pelo pootzko . Você verá que muitos patches 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 sabe nada, comece com um dos três principais sistemas de controle de revisão distribuídos , Bazaar , Git ou Mercurial . Verifique na versão limpa, trabalhe, verifique seu trabalho quantas vezes quiser e peça ao seu sistema de controle de versão uma comparação entre a versão limpa e o seu trabalho.

    
por 26.04.2012 / 02:54

Tags