2008-11-19 20 views
23

¿Cómo puedo eliminar revisiones antiguas de mi repositorio de subversión de desarrollo? Tengo un sandbox de subversión en el que tengo muchos proyectos de prueba, binarios, etc. Me gustaría podar la historia de vez en cuando.¿Cómo elimino las revisiones antiguas en Subversion?

+0

Pregunta similar: http://stackoverflow.com/questions/1294568/how-to-erase-sensitive-information-from-subversion – sleske

Respuesta

27

Aquí está la respuesta oficial:

Hay casos especiales en los que es posible que desee para destruir toda evidencia de un archivo o cometer. (Tal vez alguien accidentalmente haya confiado un documento confidencial.) Esto no es tan fácil, porque Subversion está diseñada deliberadamente para nunca perder información. Las revisiones son árboles inmutables que se construyen unos sobre otros. Eliminar una revisión de la historia provocaría un efecto dominó, creando caos en todas las revisiones posteriores y posiblemente invalidando todas las copias de trabajo.

El proyecto tiene planes, sin embargo, de implementar algún día un comando svnadmin obliterate que logre la tarea de eliminar información permanentemente. (Consulte el problema 516.)

Mientras tanto, su único recurso es svnadmin volcar su depósito, luego canalizar el archivo de volcado a través de svndumpfilter (excluyendo el mal camino) en un comando de carga svnadmin. Vea el capítulo 5 del libro de Subversion para más detalles sobre esto.

encontrar aquí: http://subversion.tigris.org/faq.html#removal

4

Puede utilizar svndumpfilter.

Sin embargo, realmente no es una cosa recomendable. Se supone que los repositorios son (principalmente) bases de datos de solo anexión. Alguna cantidad de mutación de datos es tolerable gracias a la naturaleza centralizada de la base de datos, pero no se supone que sea una operación de rutina.

Probablemente deberías usar un repositorio separado para cada proyecto en lugar de un repositorio de bolsas que querrás podar de vez en cuando.

2

Realmente no desea podar la historia, de esa manera se encuentra la locura.

Es posible que desee eliminar las ramas antiguas para que no aparezcan en su navegador svn, pero eso es tan sencillo como un 'svn rm'. Las revisiones permanecen en el sistema de control de versiones.

5

Jon - no estamos de acuerdo. Hay ocasiones en que es apropiado podar datos "muy antiguos" que estamos seguros ya no se necesitarán porque están respaldados en otros medios. Tomemos como ejemplo, un sistema que rastrea versiones de archivos de configuración automáticamente. En algún momento, tiene sentido decir: "Sabemos que ya no necesitamos tener la configuración de la forma en que parecía hace un año para estar en línea. Tener esa información en algún formato fuera de línea está bien, pero dejándola on-line en los sistemas de producción no es algo bueno ". Ese es el ejemplo perfecto de cuándo es apropiado poder archivar fácilmente los datos muy antiguos y luego eliminarlos del repositorio. He encontrado una forma de resolver el problema, pero creo que es un truco real que tengo que volver a reproducir efectivamente la historia desde un cierto punto en el tiempo a través de todas las revisiones para crear un nuevo repositorio para poder reemplazar el anterior.

+2

Sí, ese es un punto bueno y válido. Sin embargo, Subversion hace * muy * difícil de eliminar los datos antiguos. En otro VCS es un poco más fácil (por ejemplo, en git), pero todos los VCS que sé asumen que normalmente no se poda. Si desea caducar regularmente los datos antiguos, un VCS no es la herramienta adecuada. – sleske

Cuestiones relacionadas