2010-02-24 14 views
39

Para revertir una carpeta en particular en el SVN a su estado anterior utilizo actualmente los siguientes:Revertir una carpeta SVN a una revisión anterior

svn rm folder 
svn commit -m 'removed folder to revert to previous version' 
svn co http://pathto/repo/[email protected] 
cd folder 
rm -rf .svn //recursively if many folders 
svn add folder 
svn commit -am 'reverted to the previous version' 

parece demasiado problema mucho por lo que debería ser un caso de uso bastante común. Debo estar haciéndolo mal. ¿De qué otra manera puedes hacerlo?

+0

desafortunadamente este procedimiento no funcionará desde svn 1.7, porque en esta y las próximas versiones solo hay un directorio global .svn. – Znik

Respuesta

82

Por qué no usar svn merge?

Suponiendo que desea revertir a partir CABEZA actual (última comprometido) versión a revisión 268:

cd folder 
svn up 
svn merge -r HEAD:268 . 

resuelva los conflictos de forma manual (no debe haber nada si no hay un cambio local) y:

svn commit -m "- reverted to revision 268" 

Para revertir el cambio único (por ejemplo, hecho en la revisión 666):

cd folder 
svn merge -c -666 . 

Para revertir cambios locales (aún no confirmados):

cd folder 
svn revert -R . 
+0

Gracias, Jacek por salvar totalmente mis problemas. –

+0

Creo que falta un '-m' de la línea' svn commit' anterior. es decir, debería ser 'svn commit -m" - revertido a la revisión 268 "'. No puedo editar porque es menos de los 6 caracteres a los que estoy limitado. – Jonny

1

¿Por qué no utilizar 'svn merge'? Es por eso que: "Luego resuelva cualquier conflicto manualmente [..]"

Si sé que 'carpeta' en la revisión 268 contiene los datos consistentes con los que me gustaría continuar, ¿por qué crear automáticamente una fusión con datos potencialmente inconsistentes? solo para eliminar manualmente esos cambios más tarde. Es propenso a errores y frustra el propósito de mi herramienta de gestión de configuración.

I.e. Prefiero la receta de la solicitud original con una pequeña mejora. Si utiliza 'svn export' para obtener la revisión antigua no tiene que quitar los archivos .svn:

svn rm folder 
svn commit -m 'removed folder to revert to previous version' . 
svn export -r 268 http://pathto/repo/folder 
svn add folder 
svn commit -m 'reverted to the previous version' folder 
+1

Va a revertir una carpeta ... ya no se necesitan cambios no confirmados en esta carpeta, por lo que antes de usar fusionar, puede usar revertir. Entonces no puede haber ningún conflicto ... – Tobias

0

también se podría utilizar

svn revert folder/* 

revertirá todo el archivo con folder

Cuestiones relacionadas