svn - tag - ¿Debo almacenar todos los proyectos en un solo repositorio o múltiple?
svn tag (11)
Definitivamente mantendría cada proyecto en su propio repositorio, separado de todos los demás. Esto le dará a cada proyecto su propia historia de compromisos. Las reversiones en un proyecto no afectarán a otros proyectos.
Actualmente estoy usando TortoiseSVN para administrar algunos de los proyectos que tengo sobre la marcha en este momento. La primera vez que moví todo al control de código fuente no estaba realmente seguro de cómo se debería diseñar todo, así que terminé colocando cada proyecto en su propio repositorio.
Me preguntaba si sería una buena idea para mí moverlos a todos en un gran repositorio y dividirlos en carpetas de proyectos. ¿Qué hacen todos los demás?
Por el momento, ninguno de ellos comparte un código común, pero pueden hacerlo en el futuro. ¿Lo haría más fácil de administrar si estuvieran todos juntos?
Gracias.
Depende en cierta medida de lo que quiera decir con "proyecto".
Tengo un repositorio local general que contiene fragmentos aleatorios de cosas que escribo (incluido mi sitio web, ya que es pequeño). Un repositorio SVN local de un solo usuario no sufrirá problemas de rendimiento notables hasta que haya pasado muchos años tipeando. En ese momento SVN será más rápido de todos modos. Por lo tanto, aún no me arrepiento de haber arrojado todo en un repositorio, aunque algunas de las cosas allí no están relacionadas con nadie más que no sea que lo escribí todo.
Si un "proyecto" significa "una tarea de la clase", o "las secuencias de comandos que uso para manejar mi TiVo", o "mi progreso en el aprendizaje de un nuevo idioma", entonces crear un repositorio por proyecto me parece un poco innecesario. Por otra parte, tampoco cuesta nada. Así que supongo que diría que no cambies lo que estás haciendo. A menos que realmente desee la experiencia de reorganizar repositorios, en cuyo caso puede cambiar lo que está haciendo :-)
Sin embargo, si por "proyecto" te refieres a un proyecto de software "real", con acceso público al repositorio, entonces creo que los repositorios por proyecto son lo que tiene sentido: en parte porque divide las cosas limpiamente y cada proyecto se escala independientemente, pero también porque es lo que la gente esperará ver.
Compartir el código entre repositorios separados es un problema menor de lo que podría pensar, ya que svn tiene la encantadora función "svn: externalidades". Esto le permite apuntar un directorio de su repositorio en un directorio en otro repositorio y verificarlo automáticamente junto con sus cosas. Ver, como siempre, el libro de SVN para más detalles.
Los almacenaría en el mismo repositorio. Es más ordenado. Además, ¿por qué importaría una integración continua y tal? Siempre puede extraer una carpeta específica del repositorio.
También es más fácil de administrar: cuentas en un repositorio, registros de acceso de un repositorio, etc.
Mi regla de oro es consolidar las cosas que se entregan juntas. En otras palabras, si puede entregar el proyecto X y el proyecto Y por separado, colóquelos en repositorios separados.
Sí, a veces esto significa que tiene un repo enorme para un proyecto que contiene una gran cantidad de componentes, pero las personas pueden operar en subárboles de un repositorio y esto los obliga a pensar en el "proyecto completo" cuando realizan cambios en el proyecto. repo.
Mientras que cada proyecto tenga / trunk / tags y / branches, estarás bien. La adecuada integración continua es el criterio aquí.
Para Subversion, sugiero poner todo en el mismo repositorio; La sobrecarga administrativa de configurar un nuevo repositorio es demasiado alta como para que no sea obvio, por lo que es más probable que no la versión de una versión y lo lamente más tarde. Subversion proporciona muchos controles de acceso precisos si necesita restringir el acceso a una parte de su repositorio.
Sin embargo, cuando empiezo a migrar mis proyectos a Mercurial, he cambiado a la creación de un repositorio por proyecto, porque solo se necesita un "hg init" para crear uno nuevo, y puedo usar la extensión hg forest fácilmente. realizar operaciones en repositorios anidados. Subversion tiene svn: externals, que son algo similares, pero requieren más sobrecarga administrativa.
Personalmente prefiero cada proyecto en su propio repositorio
Sí, pon todo en control de fuente.
Si está utilizando SVN, mantenga los proyectos en su propio repositorio: svn es lento y se vuelve más lento.
Si sus proyectos son independientes, está bien guardarlos en repositorios separados. Si comparten componentes, luego júntelos.
Si trabajas con muchas otras personas, podrías considerar si todos necesitan el mismo nivel de acceso a cada proyecto. Creo que es más fácil otorgar derechos de acceso por persona si coloca cada proyecto en un repositorio separado. ~~~
Si va con un repositorio separado para cada proyecto, puede usar la etiqueta externa para referirse a otros repositorios, este código compartido.