Cómo aplicar un parche simple (se detectó el reverso)

Intento crear y aplicar un parche simple para corregir un error con Gradle .

Copio el file (/ usr / bin / gradle) a mi directory de trabajo, luego realizo el cambio. Luego creo el parche:

diff -u /usr/bin/gradle gradle > gradle.patch 

Luego bash aplicarlo:

 sudo patch < gradle.patch Reversed (or previously applied) patch detected! Assume -R? [n] 

Si procedo de todos modos, falla. He intentado generar el parche con los files invertidos, y en este caso se aplica "con éxito", pero no hace nada.

El parche generado se ve así:

 --- /usr/bin/gradle 2013-09-09 16:47:58.000000000 -0400 +++ gradle 2015-10-13 11:39:36.005269565 -0400 @@ -67,7 +67,8 @@ CLASSPATH=$APP_HOME/lib/gradle-launcher-1.4.jar -export JAVA_HOME=/usr/lib/jvm/default-java +# commenting out as per (https://stackoverflow.com/a/22309017) +# export JAVA_HOME=/usr/lib/jvm/default-java # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then 

He intentado editar las routes de files en la parte superior del parche para be / usr / bin / gradle, pero esto no ayuda.

También he intentado pasar -p0, en cuyo caso da:

 Ignoring potentially dangerous file name /usr/bin/gradle can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |--- /usr/bin/gradle 2013-09-09 16:47:58.000000000 -0400 |+++ /usr/bin/gradle 2015-10-13 11:39:36.005269565 -0400 -------------------------- File to patch: /usr/bin/gradle File /usr/bin/gradle is not a regular file -- refusing to patch 1 out of 1 hunk ignonetworking -- saving rejects to file /usr/bin/gradle.rej 

Cuando especifico el file en este caso, aún falla.

Esto parece una tarea simple, ¿qué estoy haciendo mal?

Necesita parchar el file correcto.

Tal como lo llamas, intentará parchar el nuevo file y, por lo tanto, asumirá correctamente un parche invertido.

Intente copyr una versión anterior del file en su directory actual y se aplicará el parche.

En cuanto a su testing -p0 : ¿tiene permiso para modificar / usr / bin / gradle? ¿Tiene permiso para crear files en / usr / bin?

También tenga en count que existen reglas diferentes para get el nombre del file en el parche.

Las reglas utilizadas por gpatch son diferentes tanto del parche original como del estándar de parche POSIX.

Tenga en count que el post "no es un file normal" es específico de gpatch . Por favor, liste el file /usr/bin/gradle . El post solo se imprime cuando el file no es un file normal, por lo que algo se ve extraño.

Entonces la solución es:

patch solo parche los files sin formatting, pero el file que desea parchar es un enlace simbólico.

Si tiene una copy del file simple (versión antigua) en su directory actual, el parche hará lo que usted espera.

Por cierto: la regla habitual para get el nombre del file para el parche es search el nombre más corto ya que la convención de nomenclatura habitual es utilizar:

file.orig

y

file