Você não precisa de patch
para isso; é para extrair alterações e enviá-las sem a parte inalterada do arquivo.
A ferramenta para mesclar duas versões de um arquivo é merge
, mas como @vonbrand
escreveu, você precisa do arquivo "base" do qual suas duas versões divergiram. Para fazer uma mesclagem sem ele, use diff
da seguinte forma:
diff -DVERSION1 file1.xml file2.xml > merged.xml
Ele incluirá cada conjunto de alterações nos comandos em estilo C #ifdef
/ #ifndef
"pré-processador", desta forma:
#ifdef VERSION1
<stuff added to file1.xml>
#endif
...
#ifndef VERSION1
<stuff added to file2.xml>
#endif
Se uma linha ou região diferir entre os dois arquivos, você receberá um "conflito", que se parece com isso:
#ifndef VERSION1
<version 1>
#else /* VERSION1 */
<version 2>
#endif /* VERSION1 */
Portanto, salve a saída em um arquivo e abra-a em um editor. Procure por lugares onde #else
apareça e resolva-os manualmente. Em seguida, salve o arquivo e execute-o em grep -v
para se livrar das% restantes#if(n)def
e #endif
lines:
grep -v '^#if' merged.xml | grep -v '^#endif' > clean.xml
No futuro, salve a versão original do arquivo. merge
pode dar a você resultados muito melhores com a ajuda da informação extra. (Mas tenha cuidado: merge
edita um dos arquivos no local, a menos que você use -p
. Leia o manual).