2009-01-27 11 views
7

Necesito mantener debajo de la versión algunos archivos grandes (algunos Gigs).¿Hay algún sistema de control de versiones que le permita eliminar archivos de forma permanente?

No necesito, y no puedo mantener en la versión toda la versión de los archivos. Quiero poder eliminar de mi versión de archivos grandes de VCS en algún momento.

Los archivos que deseo mantener bajo control de versión son grandes archivos .zip o imágenes ISO. Estos archivos pueden contener software o datos ejecutables (datos sísmicos, imágenes SAR, datos GNSS) y los proporciona el proveedor de software de mi empresa.

¿Qué sistema de control de versión podría usar?

+0

El texto de la pregunta debe cambiarse para que sea: "¿Hay sistemas de control de versiones que le permiten eliminar archivos de forma permanente?" –

+0

@Nick Pierpoint: Título modificado como sugirió. –

+0

Podría ayudarnos a darle una mejor respuesta si nos dice un poco más sobre estos archivos: ¿texto o binario? ¿cómo se adquieren o se generan (obviamente no escribiendo)? ¿Qué son? –

Respuesta

4

No creo que haya ningún sistema de control de versiones que le permita hacer eso con regularidad porque va en contra de todo lo que los sistemas de control de versiones representan.

+0

Yo no. Algunas veces cometes errores. Puedes registrar accidentalmente un gran binario que ya no deseas. Puede duplicar el tamaño de su repositorio y ya no lo desea. –

+0

Eso es lo que quiero decir con "regularidad". Por supuesto, casi todos los sistemas le permiten eliminar un archivo de un repositorio de alguna manera, pero eso de ninguna manera es una operación cotidiana alentada por un VCS. – Bombe

8

En CVS puede hacerlo eliminando los archivos del repositorio. Subversion lo permite volcando el contenido del repositorio y filtrándolo para eliminar los archivos (que es un poco engorroso). Perforce tiene un comando obliterate para eso. Muchos de los VCS distribuidos más nuevos lo hacen bastante difícil por su uso de hashes en todos los lugares y el hecho de que su repos haya sido replicado en otro lugar también puede complicar las cosas. Hg tiene un comando strip (parte de la extensión Mq), Git también puede hacer eso, creo.

+0

Buena respuesta, y la única respuesta hasta ahora que responde a la pregunta original :). El enlace para manejar esto en Subversion es http://subversion.tigris.org/faq.html#removal. Aquí también hablan de haber "borrado" en la lista de TODO. –

1

Muchos sistemas de control de versiones le permiten configurarlos de manera que almacenan solo las diferencias entre varias versiones de un archivo y ahorran espacio a través de eso.

Por ejemplo, si tiene un archivo 1Gig comprometido, cambie una parte y vuelva a ejecutarlo, solo la parte modificada se almacenará en el sistema de control de versiones.
No se utilizarán 2Gigs (archivo inicial y nuevo) pero solo 1Gig + sizeOfChanges.

Hay un inconveniente: si está almacenando archivos que cambian todo el contenido de revisión a revisión, esto también puede ser contraproducente ya que los cambios ocupan casi el mismo espacio que la versión original. Los archivos de almacenamiento son un ejemplo para esos archivos donde solo un pequeño cambio en el contenido (real) puede conducir a un contenido completamente modificado del archivo de almacenamiento.

Le sugiero que pruebe varios sistemas de control de versiones usted mismo y con sus necesidades y entorno específicos y supervise cada uno en el lado del servidor cómo cambian los requisitos de almacenamiento para cada sistema.

1

Algunos sistemas de control de versiones distribuidas permiten crear "puntos de control" que le permiten utilizar esta versión como una revisión base y evitar que retire todo el historial antes del punto de control en cada pago. Por lo tanto, puede eliminar los archivos grandes, crear un punto de control y verificar/clonar el repositorio desde ese punto de control a un nuevo directorio. Luego tienes un repositorio nuevo y pequeño, pero sin el historial antes del punto de control. Si no necesita ese historial, puede grabar el antiguo repositorio en CD y usar el nuevo y parcial a partir de ahora.

Solo lo he probado en darcs, y funciona, pero YMMV depende del sistema de control de versiones y casos de uso.

3

TFS tiene un comando de destrucción que puede usar para eliminar permanentemente archivos o revisiones como mejor le parezca.

Hay más información en este campo MSDN article.

4

Perforce generalmente permite que los archivos se coloquen de dos maneras, como revisión principal solamente (por lo tanto, solo tendría una copia) o todas las revisiones. Perforce tiene el comando de borrado de nivel de administrador que se puede usar para eliminar revisiones. Depende de usted consultar una lista de archivos, posiblemente por fecha o número de revisiones, y especificar las revisiones al comando borrar. Como el nombre sugiere borrar elimina las revisiones permanentemente de la base de datos, por lo tanto, siempre genero scripts para hacer esto y revisarlos antes de ejecutarlos. Si el comando de borrado NO se ejecuta con el indicador -Y, generará una lista de lo que se borrará, también muy útil.

+0

P4 ahora le permite especificar la cantidad de revisiones que se guardarán como parte del tipo de archivo (+ S) –

4

De alguna manera me da la impresión de que no debe usar ningún sistema de control de versiones. Como se dijo antes, lo que intenta hacer va en contra de todo lo que necesitaría un sistema de control de versiones en primer lugar.

Sugiero que cree una estructura de directorios del sistema de archivos que tenga sentido para lo que está tratando de lograr y para que pueda estructurar sus datos. Y solo haga copias de seguridad de esos archivos.

+0

Para los tipos de archivos de los que habla el OP, esta es la mejor respuesta. – NotMe

1

Me parece que necesita un sistema de copia de seguridad inteligente, en lugar de un control de versiones.

Yo uso SyncBackSE; le permite mantener varias versiones anteriores y también puede hacer cosas como "ignorar todos los archivos modificados hace más de 30 días".

Es uno de los pocos bits de software pago que uso. Creo que vale la pena echarle un vistazo.

1

Creo que estás hablando de algo así como el sistema "cubo" de AlienBrain, ¿no? La capacidad de eliminar algunas revisiones del control de versiones. Si desea destruir un elemento, normalmente se denomina "borrado" y es compatible con una serie de sistemas. Cubos, que yo sepa son compatibles con:

0

Me gustaría guardar este tipo de archivos con un nombre único (datestamped, tal vez), y tal vez, además, hacer un texto referencia al archivo externo en el sistema de control de versiones.

0

Fossil le permite hacerlo a través del mecanismo "shun". Sin embargo, ser un SCM distribuido significa que esto no afecta a todos los repositorios (por razones obvias).

Cuestiones relacionadas