Maneje grandes repositorys con binarys en git-svn

En mi lugar de trabajo hay un gran repository svn (más de 80.000 revisiones) con muchos files binarys. Estoy experimentando con git-svn, pero parece poco práctico clonar toda la historia (se necesitan más de 100 GB y casi una semana para completar el process).

He intentado clonar un subset de revisiones (últimas ~ 10.0000) y eso funciona razonablemente bien. El principal inconveniente de este enfoque es que las acusaciones solo van a la revisión más antigua que obtuve.

Idealmente, me gustaría clonar toda la historia de los files fuente y solo las últimas mil revisiones de los binarys. ¿Es eso de alguna manera posible? ¿Cualquier otra sugerencia?

Me encontré con el mismo problema en mi lugar de trabajo y compartiré mi solución.

Lamentablemente, la solución no fue hacer lo que estás imaginando (aunque originalmente también pensé en eso). La solución es el refactor del repository, que separa los binarys de las fonts. Esto es más fácil decirlo que hacerlo, ya que tendrá que involucrar a su departamento y tendrá un impacto en el flujo de trabajo de su equipo, pero si puede lograrlo, valdrá la pena.

En realidad, hay tres types de files para considerar:

  • Las fonts deben estar aisladas en un repository. Eso es lo suficientemente simple de entender.
  • Los files binarys de terceros también pueden enviarse al repository, aunque importarlos a través de svn:externals evita muchas duplicaciones potenciales. Estos binarys no son tan malos porque no tendrás mucha historia con ellos.
  • ¡Los binarys generados (salidas de tu compilation) son de lejos los peores! Estos cambian con cada compilation y mantener la historia no tiene sentido. Los sistemas VCS no están diseñados para tratar con esto. A algunas empresas les encanta comprometer binarys porque pueden consultar la última carga sin comstackrla, pero hay un costo enorme.

La solución que he estado implementando es hacer todos los binarys en una compilation y package de productos principales desde un solo command. Luego buildé, empacaré y archivaré creaciones nocturnas (o bajo demanda) desde una máquina de compilation. La gente puede get los últimos binarys de la máquina de compilation y, siempre que los packages sean fáciles de instalar, es incluso más fácil que hacer una svn up porque no tendrás tantas actualizaciones / conflictos / fusiones. Esto trae los binarys generados completamente fuera de SVN.

    Intereting Posts