Organizar un depósito de Subversion de miles de elementos

Antes de comenzar: he pasado mucho time en muchos foros (incluido Stack Overflow, y sí, hay muchas preguntas SO sobre la organización de svn), búsqueda en Google y lectura de documentos (tengo algunos libros de Subversion). Todavía no he encontrado una buena manera de organizar nuestro código base en Subversion. Actualmente usamos RCS como nuestro sistema de control de revisiones, y todo está almacenado en 1 directory de RCS. Es feo, lo sé, es por eso que estoy trabajando para lograr algo mejor. También he usado mucho Subversion, así que sé sus capacidades y cómo funciona. He dudado en hacer esta pregunta durante meses, ya que no está completamente relacionada con la progtwigción, pero como no he podido llegar a una solución, ¿qué mejor lugar para hacer mi pregunta?

Lo que complica las cosas en mi cabeza es el término de subversión "Proyecto". Si quiero administrar un proyecto de Java en subversión, esto tiene mucho sentido para mí: todos los files de Java que se combinan en un file jar podrían considerarse un "Proyecto": todos deben estar juntos. Sin embargo, en nuestro entorno, no veo una manera fácil de definir qué es un "proyecto". Tenemos más de 4,000 progtwigs, y todos ellos son bastante independientes el uno del otro. Muchos de ellos son scripts de shell o scripts de Perl. Algunos de nuestros scripts usan scripts generics de "utilidad" o "biblioteca", pero en su mayor parte, todos los objects de código son independientes.

Un "Proyecto" en nuestro entorno podría include los progtwigs A, B y C, y el file de configuration AA. Otro proyecto podría usar los progtwigs C, D y E, y el file de configuration BB. Otro proyecto podría estar cambiando el file de configuration AA, o quizás el progtwig B. No hay una forma de clasificar qué progtwigs o files pertenecen a un grupo. Debido a esto, no tengo idea de cómo organizar nuestro código en subversión. Podría poner todo en el tronco de un proyecto maestro, pero luego revisar una copy de trabajo significa revisar los más de 4,000 elementos.

Para dar un context, esto es para un Almacén de Datos. Los más de 4,000 elementos de código son necesarios para hacer que la function de depósito. Tal vez surja un requisito empresarial específico que requiera cambios en una columna a la que se accede en algunos elementos, y otro requisito empresarial requiere cambios en algunos otros elementos (tal vez algunos de los mismos del otro proyecto).

Tal vez Subversion no sea la mejor opción para nosotros, aunque tengo que creer que puede funcionar. Ya tenemos un server Subversion para nuestro código web y nuestros progtwigs Java, y funciona muy bien, porque hay proyectos fácilmente definidos. Simplemente no puedo entender cómo organizar nuestra biblioteca de código principal.

Espero que algo de eso tenga sentido … ¡Gracias de antemano por su sabiduría!

Puede mirar la propiedad externa . Le permite definir la salida del directory al que está adjuntada esta propiedad, también searchá otras ubicaciones dentro del repository en los subdirectorys de ese directory.

Por lo tanto, puede crear un directory "real" para cada componente y luego crear un directory separado para cada proyecto que usará los externos para el pago de los componentes requeridos.

Intentaría organizar la estructura de carpetas de los files antes de simplemente colocarlos en un repository de subversión.

Creo que su problema radica principalmente en la desorganización de los files existentes. Si puede encontrar una forma de dividir lógicamente su sistema en segmentos, entonces sería más fácil permitir que las personas solo revisen trozos de files (lo que estaría en agrupaciones lógicas).

Subversion realmente refleja un sistema de files, por lo que si no se ve bonito en un sistema de files, tampoco se verá bonito en subversión.

Si desea evitar la reorganización de files, quizás pueda encontrar un sistema de control de versiones que le permita registrar inputs / salidas en function de las tags, en lugar de ubicarlas en el sistema de files.