2009-07-10 10 views
11

Estoy utilizando tortuga SVN para un proyecto en el que estoy trabajando solo y he cometido (por error) un gran archivo en mi repositorio (una base de datos Intellisense de VC++). Ahora quiero eliminar este archivo de mi repositorio para facilitar su copia de seguridad.¿Es posible eliminar por completo un archivo de mi repositorio SVN?

Eliminar el archivo de mi proyecto y hacer una confirmación (obviamente) no resuelve mi problema ya que la versión anterior de ese archivo todavía está allí en el repositorio. ¿Hay alguna manera de resolver este problema que no implique la creación de un nuevo repositorio?


EDITAR

La solución @ryansstack funcionó a la perfección, que es lo que hice (me encontré con los comandos en el directorio donde se encuentra mi repositorio):

Primero creó un vertedero filtrado de mi repositorio de ese enorme archivo:

svnadmin dump tcc | svndumpfilter exclude "/trunk/Image Segmentation/Image Segmentation.ncb" > tcc.bak 

entonces he creado un nuevo repositorio (TCC2) y corrió las followi ng comando:

svnadmin load tcc2 < tcc.bak 

Ahora el tamaño de volcado de tcc2 es de 7 MB frente a 170 MB de tcc.

+0

Dupe http: // stackoverflow.com/questions/663584/subversion-permanently-remove-incorrectly-checked-in-directory-project/663595 # 663595 http://stackoverflow.com/questions/560684/svn-obliterate –

Respuesta

2

Por lo que sé, una vez que un archivo se ha cometido en svn, no hay ninguna funcionalidad en svn para deshacer eso. Puede eliminar el archivo del directorio y confirmar el directorio, pero eso solo hará que el archivo no forme parte de la última revisión del directorio; la revisión comprometida todavía está allí. Por lo general, considero que es algo bueno, pero, por supuesto, hay casos (como el suyo) en los que puede ser menos deseable.

-1

Nos encontramos con el mismo problema. El administrador de mi servidor SVN me dice que esto no se puede hacer. La única forma en que puede hacerlo es iniciar un nuevo repositorio y archivar el anterior en el disco o lo que sea.

No realice ningún cambio en el archivo, esp. si es un archivo binario, porque entonces creo que SVN almacena varias copias de él.

+0

SVN hace diffs de archivos binarios. –

2

He considerado hacer algo similar, y fundamentalmente Subversion está configurado para que no pueda simplemente eliminar algo así.

Pero como ya está haciendo una copia de seguridad de la base de datos, debe check this out. Lo que terminé haciendo fue volcar mi repositorio, filtrarlo y luego cargarlo en un nuevo repositorio. Por supuesto, ya estaba haciendo el ciclo de volcado/filtro/carga por otros motivos, por lo que un poco de filtrado extra no le agregaba mucho trabajo. Si ya está haciendo una copia de seguridad, puede hacer una copia de seguridad de su repositorio actual (supongo que está realizando un volcado, o volcados incrementales múltiples para eso), filtrar esa revisión en particular usando svndumpfilter y volver a cargar desde la copia de seguridad.

EDITAR: Tigris oficialmente tiene un issue 516 en esto. El comando "svn obliterate" está planeado, pero aún no está implementado.

-1

no es posible deshacer un archivo comprometido desde svn.

Cuestiones relacionadas