Pergunta

Estou tendo problemas para aplicar um patch à minha árvore de origem, e não é o -p habitual descascar problema. patch é capaz de encontrar o arquivo de patch.

Especificamente, a minha pergunta é como ler / interpretar o .rej arquivos patch cria quando ele falhar em alguns pedaços. A maioria das discussões sobre patch / diff que tenho visto não incluem esta.

Foi útil?

Solução

Um exemplo simples:

$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b

Como você pode ver: O arquivo antigo contém linha 2 eo novo arquivo deve conter linha b. No entanto, ele realmente contém linha c (que não é visível no ficheiro rejeitar).

Na verdade, a maneira mais fácil de resolver esses problemas é levar o fragmento diff do arquivo .diff / .patch, inseri-lo no local apropriado no arquivo a ser corrigido e, em seguida, comparar o código manualmente para descobrir , que linhas realmente causar o conflito.

Or - alternativamente: Obter o arquivo original (não modificada), corrigi-lo e executar um merge de três vias no arquivo

.

Outras dicas

Wiggle é uma grande ferramenta para a aplicação de arquivos .rej quando o patch não terá êxito.

Eu não sou um especialista em lidar com arquivos de patch, mas eu gostaria de adicionar um pouco de clareza sobre como lê-los com base na minha compreensão das informações que eles contêm.

Os arquivos .rej irá dizer-lhe:

  • a diferença entre o original eo arquivo .rej;
  • onde o código de problema começa no arquivo original, quantas linhas ele continua nesse arquivo;
  • e onde o código começa no novo arquivo, e quantas linhas se prolonga por nesse arquivo.

Assim, dado esta mensagem, observado no início do meu arquivo .rej:

diff a/www/js/app.js b/www/js/app.js (rejected hunks) @@ -4,12 +4,24 @@

Eu vejo que para o meu arquivo de problema (www/js/app), a diferença entre o original (anotado como a/www/js/app.js na primeira linha) eo arquivo .rej (anotado como b/www/js/) inicia na linha 4 do original e prolonga-se por 12 linhas (a parte antes da vírgula em @@ -4,12, +4,24 @@ na linha dois), e começa na linha 4 da nova versão do arquivo e prolonga-se por 24 linhas (a parte após a vírgula em @@ -4,12, +4,24 @@.

Para mais informações, ver o excelente visão geral dos arquivos de patch (que contêm a informação que eu nota acima, bem como detalhes sobre linhas adicionadas e / ou entre versões de arquivo) em http://blog.humphd.org/vocamus-906/ .

Qualquer correções ou esclarecimentos boas-vindas, claro.

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