¿Cómo hacer y aplicar el parche SVN?


Me gustaría crear un archivo de parche de tipo SVN para httpd.conf para poder aplicarlo fácilmente a otros hosts.

Si lo hago

cd /root
diff -Naur /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf > httpd.patch
cp /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf
patch < httpd.patch

Obtengo:

can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- /etc/httpd/conf/httpd.conf_original    2012-04-26 13:36:08.331068438 +0200
|+++ /etc/httpd/conf/httpd.conf 2012-04-26 14:27:36.857075085 +0200
--------------------------
File to patch: 

Pregunta

¿Qué estoy haciendo mal?

Author: Sandra Schlichting, 2012-04-26

3 answers

De forma predeterminada, patch ignora la porción de directorio del nombre de archivo de destino; solo está buscando "httpd.conf " en su directorio de trabajo actual. Si quieres que use la ruta completa, tienes que pedirle explícitamente que lo haga con la opción -p:

patch -p0 < httpd.patch

(El número después de -p le dice cuántos niveles eliminar de la ruta del nombre de archivo; -p N elimina todo hasta e incluyendo el número de barra inclinada N. La primera barra inclinada es el número 1, por lo que -p0 significa " no nada".)

En general, podría ser mejor no confiar en tener la ruta completa en el archivo de parche; el parche será más útil en general si funciona incluso para archivos en un diseño de directorio diferente. Siempre puede cd en el directorio que contiene el archivo antes de ejecutar el parche (y utilizar una ruta completa para encontrar el archivo de parche en sí, si es necesario, en su lugar).

 37
Author: Mark Reed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-28 16:33:08

Uso svn patch.

Caso 1: usando /usr/bin/patch:

svn diff > $TMPDIR/mypatchfile.patch
cd myOtherCheckOut
patch -p0 < $TMPDIR/mypatchfile.patch

Aplica bien sus cambios si no hay archivos agregados/eliminados a través de svn add o svn delete

Caso 2: usando svn patch:

svn diff > $TMPDIR/mypatchfile.patch
cd myOtherCheckOut
svn patch $TMPDIR/mypatchfile.patch

Rastrea los archivos agregados y eliminados también.

Tenga en cuenta que ni las pistas svn moves y renames

 43
Author: Fox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-16 14:11:53

Si está utilizando TortoiseSVN, hay una interfaz fácil de usar para crear y aplicar un parche.

Para crear:

Haga clic derecho en la carpeta - > TortoiseSVN - > Crear parche

Se le pedirá Que seleccione un archivo de salida

Para aplicar:

Haga clic derecho en la carpeta - > TortoiseSVN - > Aplicar parche

Se le pedirá una interfaz para seleccionar los archivos a los que aplicar los parches, y fusionar si necassary.

 3
Author: James Wierzba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-21 18:36:12