Creando y aplicando parches

En proyectos de código abierto (como éste), todos tienen acceso de lectura al repositorio, y cualquiera puede hacer una contribución al proyecto. ¿Así que cómo se controlan esas contribuciones? Si cualquiera pudiera confirmar cambios, el proyecto estaría permanentemente inestable y probablemente roto de forma permanente. En esta situación, el cambio se maneja mediante un archivo de parche enviado al equipo de desarrollo, que tienen acceso de escritura. Ellos pueden revisar el parche antes, y luego o bien confirmarlo en el repositorio o devolvérselo al autor.

Los archivos de parche son simplemente archivos de diff unificados que muestran las diferencias entre su copia de trabajo y la revisión base.

Creando un archivo parche

Primero necesita hacer y probar sus cambios. Luego en vez de utilizar el comando TortoiseSVNConfirmar... sobre la carpeta padre, seleccione TortoiseSVNCrear Parche...

Figura 4.63. El diálogo Crear parche

El diálogo Crear parche

ahora puede seleccionar los archivos que desea incluir en el parche, del mismo modo a como lo haría con una confirmación completa. Esto producirá un único archivo que contendrá un resumen de todos los cambios que ha hecho a los archivos seleccionados desde la última vez que se actualizó desde el repositorio.

Las columnas en este diálogo pueden ser personalizadas de la misma forma que las columnas en el diálogo Comprobar modificaciones. Para más detalles, lea “Estado local y remoto”.

By clicking on the Options button you can specify how the patch is created. For example you can specify that changes in line endings or whitespaces are not included in the final patch file.

Puede producir parches separados que contengan cambios a diferentes conjuntos de archivos. Por supuesto, si crea un archivo de parche, hace algunos cambios más a los mismos archivos y luego crea otro parche, el segundo archivo de parche incluirá ambos conjuntos de cambios.

Simplemente grabe el archivo utilizando un nombre de archivo de su elección. Los archivos de parche pueden tener la extensión que desee, pero por convención se suele utilizar las extensiones .patch o .diff extension. Ya está preparado para enviar su archivo de parches.

Sugerencia

Do not save the patch file with a .txt extension if you intend to send it via email to someone else. Plain text files are often mangled with by the email software and it often happens that whitespaces and newline chars are automatically converted and compressed. If that happens, the patch won't apply smoothly. So use .patch or .diff as the extension when you save the patch file.

También puede almacenar el parche en el portapapeles en vez de en un archivo. Puede querer hacer esto para poder pegarlo en un email de forma que lo revisen otros. O si tiene dos copias de trabajo en una máquina y quiere transferir cambios de una a otra, un parche en el portapapeles es una forma cómoda de hacerlo.

If you prefer, you can create a patch file from within the Commit or Check for Modifications dialogs. Just select the files and use the context menu item to create a patch from those files. If you want to see the Options dialog you have to hold shift when you right click.

Aplicando un archivo parche

Los archivos de parches se aplican en su copia de trabajo. Esto debe hacerse desde el mismo nivel de carpetas que se utilizó para crear el parche. Si no está seguro de cuál es, mire la primera línea del archivo de parche. Por ejemplo, si el primer archivo en el que se trabajó era doc/source/english/chapter1.xml y la primera línea en el archivo de parche es Index: english/chapter1.xml entonces necesita aplicar el parche en la carpeta english. Sin embargo, suponiendo que esté en la copia de trabajo correcta, si ha seleccionado un nivel de carpeta erróneo, TortoiseSVN se dará cuenta y le sugerirá el nivel correcto.

Para aplicar un archivo de parche en su copia de trabajo, necesita al menos acceso de lectura al repositorio. La razón para esto es que el programa de fusión debe referenciar los cambios sobre la revisión contra la que se hicieron por el desarrollador remoto.

Desde el menú contextual de esa carpeta, pulse en TortoiseSVNAplicar Parche... Esto mostrará un diálogo de abrir archivo que le permitirá seleccionar el archivo de parche a aplicar. Por defecto sólo aparecen los archivos .patch o .diff, pero puede elegir Todos los archivos. Si había guardado previamente un parche en el portapapeles, puede usar Abrir desde el portapapeles... en el diálogo de abrir archivo. Note que esta opción sólo está disponible si guardó el partche en el portapapeles usando TortoiseSVNCrear Parche.... Copiar un parche al portapapeles desde otra aplicación no hará que el botón aparezca.

Alternativamente, si el archivo de parche tiene una extensión .patch o .diff, puede hacer click con el botón derecho en él directamente y seleccioanr TortoiseSVNAplicar Parche.... En este caso se le preguntará la ruta de la copia de trabajo.

Estos dos métodos le ofrecen formas diferentes de hacer lo mismo. Con el primer método selecciona la copia de trabajo y busca el archivo de parche. Con el segundo selecciona el archivo de parche y busca la copia de trabajo.

Una vez que haya seleccionado el archivo de parche y la ruta de la copia de trabajo, se ejecuta TortoiseMerge para fusionar los cambios del archivo de parche contra su copia de trabajo. Una pequeña ventana le muestra los archivos que han sido cambiados. Haga doble click por turnos en cada uno de ellos, compruebe los cambios y grabe los archivos fusionados.

El parche del desarrollador remoto ya ha sido aplicado a su copia de trabajo, por lo que necesita confirmar para que todos los demás accedan a los cambios desde el repositorio.