Quería enviar un diff para su revisión, para un proyecto de código abierto.
Obtuve el código usando SVN (del terminal, Ubuntu). E hice ediciones menores en pocos archivos. Ahora solo quiero enviar un cambio. El resto de los cambios que hice fueron para depurar y ya no son necesarios.
He generado diff usando svn di > ~/os/firstdiff.diff
Entonces mi pregunta, ¿Cómo descartar mis cambios locales?
¿Hay una forma SVN de hacerlo? Si no, tendré que ir a cada archivo y eliminar todas mis ediciones. Luego generaría un nuevo diff y lo enviaría.
Debe revertir todos los cambios con el comando svn revert :
svn revert foo.c
svn revert --recursive .
fuente
svn revert --recursive .
me ayuda mucho .--recursive
parámetro revierte cualquier cambio local y esta es la pregunta.Para descartar cambios locales en un archivo en particular:
Para descartar cambios locales en una carpeta en particular:
fuente
Simple
svn revert
fue suficiente para el póster original. Sin embargo, un simplesvn revert
no servirá en el caso más general dondeLa sugerencia de @ ErichBSchulz de usar
git add -p
es muy razonable y mucho más generalmente aplicable en tal caso. La respuesta simplemente carecía de algunos detalles. Suponiendo que su directorio actual es el directorio que desea hacer el parche que se puede compartir, podría hacer algo como esto:Verifique la versión original de Subversion a un directorio diferente (elija un nombre de directorio que no exista, aquí usando el subdirectorio
TMP/
).Usando ese pago prístino de svn como base, inicie un repositorio git, ignorando los directorios .svn; compromete todo en svn head a su repositorio temporal de git
Copie los metadatos del repositorio git recién preparado en su directorio de trabajo original; como no se necesita el directorio prístino de subversión, puede deshacerse de él. Su directorio de trabajo ahora es el repositorio git y subversion:
Ahora puede usar de manera poderosa y conveniente
git add -p
para elegir interactivamente exactamente lo que desea compartir y enviarlos a su repositorio git. Si necesita agregar archivos a la confirmación, hágalo tambiéngit add <file-to-add>
antesgit commit
Usando el commit, prepare un parche que quiera compartir. Para este propósito, también puede usar
git diff HEAD^..HEAD
, ogit format-patch
(este último se puede usar para preparar directamente los correos electrónicos que se enviarán con el parche o parches múltiples):Para deshacerse de los metadatos de git, solo hazlo
rm -rf .git/
. Si planea continuar hackeando con el directorio de trabajo original, puede continuar usándologit
para administrar sus cambios locales. En este caso, probablemente se beneficiaría de la inversión de aprender a usargit svn
.Nota: Si está familiarizado con
git
esto, es algo trivial improvisar. De lo contrario, esto puede parecer un poco desordenado. Puede generalizar el enfoque escribiendo una secuencia de comandos a partir de estos pasos para implementar una "confirmación interactiva" o una "creación interactiva de parches" para svn que podría usarse sin comprender Git.fuente
Podrías usar
Al publicar su diferencia, no olvide decir la revisión contra la cual difiere.
Como otros respondieron, también puedes usarlo con
svn revert
cuidado. Depende de si desea mantener sus cambios locales para su trabajo futuro o no ...fuente
revert
mis cambios todo el tiempo. Entonces usaría tu camino en el futuro.Vaya a la raíz de ese repositorio y ejecute el siguiente comando
fuente
svn revert -R .
podría ser más cortoPuede usar el comando commit en el archivo que desea poner y usar el comando svn revert para descartar los cambios locales restantes
fuente