Existen muchos programas que pueden crear un parche de diferencias, pero estoy pasando un mal rato tratando de aplicar uno. Estoy tratando de distribuir un parche, y un usuario me hizo una pregunta sobre cómo aplicarlo. Así que traté de resolverlo por mi cuenta y descubrí que no tengo idea, y la mayoría de las herramientas que puedo encontrar son de línea de comandos. (Puedo manejar una línea de comando, pero mucha gente se perdería sin una GUI agradable y amigable. Por lo tanto, eso no es bueno para este propósito).
Intenté usar TortoiseSVN. Tengo el parche que me gustaría aplicar. Hago clic derecho en el parche, y hay una opción en el submenú TortoiseSVN que dice "Aplicar parche". Todo lo que hace es abrir una ventana vacía.
Así que intenté golpear Abrir. Tiene dos opciones: fusionar y aplicar diff unificado. (El parche está en formato diff unificado, por suerte.) Pero la opción de aplicar simplemente no funciona: pide el parche y una carpeta. ¡De alguna manera se olvidó de pedir el archivo para aplicar el parche! Entonces TortoiseSVN simplemente no funciona. ¿Existe una utilidad basada en la GUI de Windows que tomará un parche y un archivo y lo aplicará correctamente?
EDITAR: Mirando las respuestas hasta ahora, parece que Tortoise solo lo hará bien si es un archivo que ya está versionado. Ese no es el caso aquí. Necesito poder aplicar un parche a un archivo que no salió de un repositorio SVN. Acabo de intentar usar Tortoise, porque sé que SVN usa diffs y tiene que saber cómo crearlos y aplicarlos.
Respuestas:
Aplicar el parche
Con TortoiseMerge:
Alternativa de pantalla si se abre desde TortoiseMerge. En la pantalla siguiente, el directorio se refiere al directorio de "fusiones" mencionado en el paso 2 anterior:
Captura de pantalla de la GUI de WinMerge:
fuente
Hice una herramienta Python pura solo por eso. Tiene un comportamiento multiplataforma predecible. Aunque no crea archivos nuevos (al momento de escribir esto) y carece de una GUI, puede usarse como una biblioteca para crear una herramienta gráfica.
ACTUALIZACIÓN : Debería ser más conveniente usarlo si tiene instalado Python.
fuente
TortoiseMerge es una utilidad separada que viene incluida con TortoiseSVN.
También se puede descargar por separado en el archivo TortoiseDiff.zip . Esto le permitirá aplicar diferencias unificadas a archivos no versionados.
fuente
Sé que dijiste que preferirías una GUI, pero las herramientas de línea de comandos harán el trabajo muy bien. Ver GnuWin para un puerto de herramientas de Unix para Windows. Necesitarías el comando parche, obviamente ;-)
Sin embargo, es posible que tenga un problema con la terminación de la línea. El puerto GnuWin asumirá que el patchfile tiene terminación de línea de estilo DOS (CR / LF). Intente abrir el archivo de parche en un editor razonablemente inteligente y lo convertirá por usted.
fuente
En TortoiseSVN, la aplicación de parches funciona. Debe aplicar el parche al mismo directorio desde el que se creó . Siempre es importante tener esto en cuenta. Así es como lo haces en TortoiseSVN:
Haga clic derecho en la carpeta a la que desea aplicar el parche. Presentará un cuadro de diálogo que le preguntará por la ubicación del archivo de revisión. Seleccione el archivo y esto debería abrir una pequeña ventana de lista de archivos que enumera los archivos modificados, y al hacer clic en cada elemento debería abrir una ventana de diferencia que muestra lo que el parche está a punto de hacer en ese archivo.
Buena suerte.
fuente
La utilidad patch.exe de la instalación de Git funciona en Windows 10.
Instale Git para Windows y luego use el
"C:\Program Files\Git\usr\bin\patch.exe"
comando para aplicar un parche.Si se
Hunk #1 FAILED at 1 (different line endings).
recibió un mensaje de error como el de la salida durante la aplicación de un parche, intente agregar el-l
(que es un acceso directo para--ignore-whitespace
) o los--binary
interruptores a la línea de comando.fuente
Puede usar este puerto nativo Win32 de la utilidad de parche.
Viene junto con una mayor selección de otras utilidades y en contraste con Cygwin y similares, no necesita ninguna DLL o similar. Simplemente elija su pequeño ejecutable de su elección y guárdelo donde desee.
Uso simple:
Obtenga más ayuda:
fuente
patch.exe
.patch
. Windows considera que todos los ex con la palabrapatch
son sospechosos.Puede instalar Cygwin y luego usar la herramienta de parche de línea de comandos para aplicar el parche. Consulte también esta página de manual de Unix , que se aplica al parche .
fuente
Parece que TortoiseSVN (TortoiseMerge) requiere la línea
Index: foobar.py
en el archivo diff / patch. Esto es lo que necesitaba hacer para que un archivo de parche que no sea TortoiseSVN funcione con el comando Aplicar parche del botón derecho de TortoiseSVN .Antes de:
Después:
O si conoce la revisión específica desde la que trabajaba su colaborador:
fuente
Yo uso MSYS2 de http://www.msys2.org/
Proporciona muchas utilidades como
patch
,which
,git
,tree
, y muchos más.Después de instalar MSYS2, simplemente ejecute el administrador de paquetes para instalar
patch
:fuente
El parche le dice a qué archivo aplicar. El encabezado debe ser algo así (verlo en el Bloc de notas o en su editor de texto favorito)
En el caso de un parche de Subversion, también tendrá números de revisión (ya que los nombres de los archivos son los mismos).
El parche GNU te permitirá anular esos nombres, pero no conozco ninguna herramienta GUI para hacer lo mismo. Verificaría con los diversos programas diff, aunque no parece que WinMerge admita la aplicación de parches.
fuente
Eclipse debería poder hacerlo, vaya a la perspectiva TeamSynchronize y luego a Proyecto-> Aplicar parche
fuente
Para proyectos Java, he usado NetBeans para aplicar archivos de parche. Si el código Java que está reparando aún no es un proyecto de NetBeans, cree un proyecto para él. Para crear un nuevo proyecto:
Ahora que tiene un proyecto, aplique el parche:
Eso es. Su parche debe aplicarse, y debería ver una ventana de diferencias que muestra los cambios.
fuente
Ya estoy usando BeyondCompare (comercial) para diferencias y fusiones, y esta herramienta también tiene la capacidad de crear, ver y aplicar parches.
fuente
Si está utilizando Mercurial , esto se hace a través de "importar". Entonces, en la línea de comando, el
hg import
comando, o (puede encontrar--no-commit
útil la opción), o "Repository" => "Importar ..." en Hg Workbench.Tenga en cuenta que estos confirmarán los cambios de forma predeterminada; puede evitar esta
hg import --no-commit
opción de uso si usa la línea de comandos, o si usó Hg Workbench, puede resultarle útil emitirhg rollback
después de la fusión.fuente
Al aplicar parches usando TortoiseSVN, generalmente guardo la ruta en la raíz del repositorio desprotegido. Entonces debería poder hacer clic derecho en el parche, ir al menú TortoiseSVN y hacer clic en ApplyPatch. ApplyPatch debería determinar automáticamente qué nivel en la jerarquía de directorios se creó el parche.
Sin embargo, he tenido problemas en el pasado con la aplicación de parches que contienen archivos nuevos o que implican renombrar archivos. Cualquier algoritmo que Tortoise use para esto no parece manejar esos escenarios muy bien. Unicode puede darle problemas similares.
fuente
¿Tienes dos monitores? Estaba teniendo el mismo problema con TortoiseMerge y me di cuenta de que cuando desactivé uno de los monitores, apareció la pequeña ventana con la lista de archivos. Espero que esto te ayude.
fuente
Si recibe el mensaje de error "No es una copia de trabajo", intente seleccionar un directorio del cuadro de diálogo TortoiseMerge que es un directorio de trabajo de SVN.
fuente
Un puerto BusyBox para Windows tiene un comando diff y patch, pero solo admite el formato unificado.
fuente
Solo usa:
recuerde ejecutar este comando solo desde la ubicación de la carpeta donde creó el parche.
fuente