tutorial subversion repositorios listar español comandos svn patch

svn - subversion - diff de subversión incluyendo nuevos archivos



subversion linux (4)

El hecho de que tu archivo sea binario es exactamente el motivo por el que no se muestra, me temo. El comando diff de Subversion solo hace diffs / patches textuales (aunque Subversion internamente puede manejar las diferencias de archivos binarios de manera eficiente entre las versiones).

Tengo algunos cambios locales en un proyecto de código abierto que utiliza Subversion como control de origen. (No tengo acceso de confirmación en el repositorio de proyecto original).

Mi cambio agrega un archivo, pero este archivo no está incluido en el resultado de "svn diff". (Vale la pena señalar que el nuevo archivo es un texto binario, no simple).

¿Cómo puedo hacer un parche que incluya los nuevos archivos?

$ svn st A tests/foo.zip $ svn diff $


Si está construyendo un parche, es posible que desee utilizar el antiguo simple ''diff'' con la opción --new-file que trata el archivo perdido como vacío.

Tenga en cuenta que la sintaxis de esta opción en realidad puede variar según la versión de diff antiguo que esté utilizando.


Hay una opción de fuerza en el comando diff, pero produce un archivo de parche incorrecto para los binarios en mi máquina. Usarlo con la opción --diff-cmd funciona para mí:

svn diff --force --diff-cmd /usr/bin/diff -x -au

Creo que esto produce exactamente lo que querías.


Experimenté un comportamiento similar al de Pozsar. Y su respuesta funcionó para mí mejor que el normal svn diff --force. Sin embargo, si se ejecuta en una máquina DOS (por ejemplo, a través de Cygwin), es posible que deba modificar su respuesta ligeramente. El siguiente parche diff + funcionó para el parcheo de mis archivos text + binary en Cygwin usando el --binary arg:

svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff patch -p0 --binary -i mybinarydiff.diff