working with upstream unable tortoise software information from determine branches svn git version-control patch

with - ¿Cómo aplicar SVN diff a Git?



software git (6)

¿Por qué a nadie le gusta git-svn? No puedo suponer que nadie lo sepa.

Hay git-svn (y git-hg y git-cvs y git-bzr afaict). Al menos con git-svn puedes simplemente hacer

git svn clone --stdlayout http://myrepo/root here

el uso de -s ( --stdlayout ) asume el estándar trunk / branches / tags / layout, pero puedes tenerlo de cualquier forma ( man git-svn ).

La asignación es bidireccional, por lo que puede pulsar y tirar como con un control remoto nativo (git). No se hicieron preguntas.

Tengo mis proyectos en 2 repositorios. Uno bajo SVN y otro bajo Git. Cada vez que cambio algo en SVN, quiero hacer lo mismo con el repositorio de Git.

Digamos que realizo un cambio en el repositorio SVN, produciendo la revisión 125. ¿Cómo aplicaría estos mismos cambios a mi repositorio Git (suponiendo que mi repositorio Git esté actualizado con la revisión 124).

Gracias.


Además de usar el parche como se mencionó anteriormente, también podría considerar configurar un enganche post-commit para que no tenga que hacer esto cada vez que cometa algo nuevo.


El siguiente funcionó para mí.

Fuente: Cómo crear y aplicar un parche con Git

Primero, observe qué cambios hay en el parche . Puedes hacer esto fácilmente con git apply

git apply --stat fix_empty_poster.patch

Tenga en cuenta que este comando NO aplica el parche, pero solo muestra las estadísticas sobre lo que hará. Después de echar un vistazo al archivo de parche con su editor favorito, puede ver cuáles son los cambios reales.

A continuación, le interesa saber qué tan problemático será el parche . Git te permite probar el parche antes de que realmente lo apliques.

git apply --check fix_empty_poster.patch

Si no obtiene ningún error, el parche se puede aplicar limpiamente 😀. De lo contrario, es posible que veas con qué problemas te encontrarás.

Para aplicar el parche, usaré git am en lugar de git apply. La razón de esto es que git am le permite cerrar la sesión de un parche aplicado. Esto puede ser útil para referencia posterior.

git am --signoff < fix_empty_poster.patch Applying: Added specs to test empty poster URL behaviour Applying: Added poster URL as part of cli output

De acuerdo, los parches se aplicaron limpiamente y su rama principal se ha actualizado. Por supuesto, ejecute sus pruebas nuevamente para asegurarse de que no haya nada roto.

En su registro de git, encontrará que los mensajes de confirmación contienen una etiqueta de "Signed-off-by". Github y otros leerán esta etiqueta para proporcionar información útil sobre cómo la confirmación terminó en el código.


Lo que realmente busqué / busqué fue:

cd /path/to/svn/repo svn diff -r 125 > /tmp/patch.diff cd /path/to/git/repo patch -p0 < /tmp/patch.diff


Si va a generar un parche en SVN y aplicarlo con Git más tarde, no olvide usar la --git línea de comando :

--git

Habilita un modo de salida especial para svn diff diseñado para la compatibilidad cruzada con el popular sistema de control de versiones distribuidas de Git.

Por ejemplo, ejecutar

svn diff --git -r 125 > /tmp/patch.diff


Tratar:

svn diff | patch -d /path/to/git/repo -p0

Consulte svn help diff si desea exportar la diferencia de una revisión específica.