Pergunta

Eu tenho algumas alterações locais para um projeto open source que usa Subversion como seu controle de origem. (Eu não tenho acesso de submissão no repositório do projeto original).

Meu mudança adiciona um arquivo, mas este arquivo não está incluído na saída do "diff svn". (Pode ser interessante notar que o novo arquivo é um binário, não texto simples.)

Como posso fazer um remendo que inclui os novos arquivos?


 $ svn st
   A      tests/foo.zip
 $ svn diff
 $
Foi útil?

Solução

O fato de que o arquivo é binário é exatamente por isso que ele não é exibido estou com medo. comando diff de subversão só faz textual diffs / manchas (embora Subversion internamente pode lidar com as diferenças de arquivo binário de forma eficiente entre as versões).

Outras dicas

I teve comportamento semelhante ao Pozsar. E sua resposta funcionou para mim melhor do que o normal, svn diff --force. No entanto, se executado em uma máquina DOS (por exemplo, via Cygwin), você pode precisar modificar sua resposta ligeiramente. O seguinte diff + remendo trabalhou para remendar meu texto + arquivos binários em Cygwin usando o arg --binary:

svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff

patch -p0 --binary -i mybinarydiff.diff

Há uma opção --force ao comando diff, mas produz um arquivo de patch incorreto para binários na minha máquina. Usá-lo com a opção --diff-cmd funciona para mim no entanto:

svn diff --force --diff-cmd /usr/bin/diff -x -au

Eu acho que isso produz exatamente o que você queria.

Se você está construindo um patch, você pode querer usar 'diff' velho liso com a opção --new-file que trata o arquivo faltando tão vazio.

Note que a sintaxe para esta opção pode realmente variam dependendo de qual versão do plain diff velho que você está usando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top