2008-09-09 19 views
19

Trabajo para una empresa cuya actividad principal no está relacionada con el software. La mayoría de la documentación para usar el control de fuente está escrita con un equipo de desarrollo que escribe para proyectos comerciales o de código abierto en mente. Como alguien que escribe en el software de la casa puedo decir que el trabajo se hace de manera diferente, entonces sería en un entorno comercial o de código abierto. Además, hay procedimientos almacenados y scripts de bases de datos que deben mantenerse sincronizados con el código.¿Cómo organizarías un repositorio de Subversion para proyectos de software internos?

En particular, estoy buscando sugerencias sobre cómo estructurar mejor el repositorio con el software interno en mente. La mayoría de la documentación sugiere troncales, ramas, etiquetas, etc. Y procedimientos para mantener los entornos de producción, prueba y desarrollo sincronizados con sus respectivas secciones en el repositorio, etc.

Respuesta

0

Como se especifica en this thread, distribuido VCSs (Git, Mercurial) son un modelo mejor que las centralizadas, debido a la rama de la facilidad de creación, rama facilidad absorbente ninguna necesidad para configurar un servidor especial, no es necesario tener acceso a la red para trabajar y algunas otras ventajas. Si trabaja solo, el DVCS le permite incorporar personas a sus proyectos si surge la necesidad con mucha facilidad. De todos modos, respondiendo directamente a su pregunta, una forma de configurar SVN sería tener un repositorio por proyecto y, dependiendo de si los procedimientos almacenados y las libretas y bibliotecas están compartidas o no, cree un directorio en cada árbol de proyecto para las secuencias de comandos y procedimientos almacenados, o un repositorio completo para el código compartido.

6

Para subversión, hay Assembla que viene con Trac y otras herramientas útiles. Es gratis o puede pagar una cuenta si necesita más espacio o usuarios por proyecto.

2

Para mi empresa, uso svn + ssh y la autenticación basada en claves. Puede hacerlo con clientes de Windows y clientes de Linux. Esto es realmente fácil de usar una vez que obtiene las llaves directamente cuando usa una clave ssh para iniciar sesión en lugar de escribir una contraseña.

Here's an article on setting up svn+ssh con notas sobre la seguridad. Si entiendes todo esto y sigues estos pasos, comenzarás bien.

This article describe una serie de formas de proteger aún más sus inicios de sesión ssh para las cuentas svn.

Recomiendo crear cuentas específicamente para el acceso svn sin otro acceso a ese servidor. Supongo que usaría una compilación diaria o una secuencia de comandos automatizada para actualizar sus procesos almacenados en la base de datos. Las compilaciones diarias pueden tener sus propias cuentas especiales y sus propias claves ssh. No me gusta que mis herramientas automatizadas se ejecuten con el mismo inicio de sesión que un usuario humano (para saber qué herramienta está rota).

Si no entiende todos los trucos de seguridad, la búsqueda en google puede ayudarlo. Si tiene problemas, configure uno sin los trucos de seguridad primero. Eso hace que sea un poco más fácil de solucionar.

¡Buena suerte y disfrute de los beneficios del control de código fuente!

3

Un repositorio para sus proyectos es probablemente suficiente. Me gusta el enfoque típico que los índices de la estructura por proyecto (ver this section del O'Reilly Subversion book):

/first-project/trunk 
/first-project/branches 
/first-project/tags 
/another-project/trunk 
/another-project/branches 
/another-project/tags 
/common-stuff/trunk 
/common-stuff/branches 
/common-stuff/tags 

Tenga en cuenta que siempre se puede reorganizar el repositorio más adelante.

Además, para las cosas internas, prefiero FSFS para el data-store, en comparación con Berkeley DB. FSFS es más resistente y la velocidad de las cajas no es una gran preocupación para pequeños equipos/proyectos. Puede compare y decidir por usted mismo.

Otras partes estándar de la receta incluyen Trac y un servidor Linux mínimo para alojar el repositorio en la LAN.

19

La configuración de repositorios SVN puede ser complicada solo en el sentido de cómo los organiza. Antes de configurar SVN, en realidad RTFM conocía el Subversion manual en línea que analiza las técnicas organizativas para repositorios y algunos de los errores que debería pensar de antemano, es decir, lo que no puede hacer después de haber creado sus repositorios si decide cambiar de opinión. Sugiero un pase a través de este manual antes de la instalación.

Para nosotros, como consultores, hacemos desarrollo de software personalizado y interno, así como algunos documentos de gestión a través de SVN. Nos interesaba crear un repositorio para cada cliente y uno para nosotros. Dentro de cada repositorio, creamos carpetas para cada proyecto (software u otro). Esto nos permitió segmentar el acceso de seguridad por repositorio y por cliente e incluso por proyecto dentro de un repositorio. Yendo más profundo, para cada proyecto de software creamos carpetas de 'trabajo', 'etiquetas' y 'ramas'. En general, publicamos lanzamientos en 'etiquetas' usando 'release_w.x.y.z' como la etiqueta de un estándar.

En su caso, para mantener sprocs, scripts y otros documentos relacionados sincronizados, puede crear una carpeta de proyecto, luego debajo una carpeta 'working', luego debajo de ese 'código' y al lado de 'scripts' , etc. Luego, cuando etiqueta la versión de trabajo para su lanzamiento, termina etiquetándolo todo junto.

\Repository 
    \ProjectX 
     \Working 
     \Code  
     \Scripts 
     \Notes  
     \Tags 
     \Branches 

En cuanto a la no-código, sugeriría una distribución de la carpeta directamente por proyecto o tipo de documento (manuales, políticas, etc.). En general, con los documentos y dependiendo de cómo funciona su empresa, basta con tener el historial de versiones/registros.

Ejecutamos SVN en Windows junto con WebSVN que es un gran visor de repositorio de código abierto. Lo usamos para dar a los clientes acceso web a su código y todo está impulsado por la seguridad subyacente de Subversion. Internamente, usamos TortoiseSVN para administrar los repositorios, confirmar, actualizar, importar, etc.

Otra cosa es que la capacitación se debe considerar como parte integral de su implementación. Los usuarios nuevos en el control de versiones pueden tener dificultades para entender lo que está sucediendo. Descubrimos que darles instrucciones funcionales (hacer esto al crear un proyecto, hacer esto al actualizar, etc.) fue muy útil mientras aprendían los conceptos. Creamos un repositorio de "recinto de seguridad" donde los usuarios pueden jugar todo lo que quieran con documentos y carpetas para practicar, también puede resultar útil para experimentar qué políticas establecer.

¡Buena suerte!

+2

Tenga en cuenta que el estándar establecido para las carpetas de nivel superior es 'trunk, branches, tags'. Si usa 'working' en lugar de' trunk', confundirá muchas herramientas que funcionan con repositorios SVN. Desafío fuertemente a hacer eso. – sleske

3

Después de publicar esta pregunta hablé con un compañero de trabajo que sugirió que leyera el artículo:

http://www.codinghorror.com/blog/archives/000968.html

En definitiva, se aboga por que los programadores sean más conscientes de ramificación. Me ayudó a ver que no hay una forma correcta de organizar nuestro repositorio. Para nuestro equipo, tendremos un tronco y dos ramas a largo plazo para pruebas y desarrollo. Además crearemos ramas separadas para cada tarea y fusionaremos los cambios de las ramas de tareas a medida que promovamos la tarea hasta las pruebas y la producción.

0

Creo en seguir el patrón básico con un proyecto dir con tronco, etiquetas, ramas debajo de él. Normalmente me gusta para configurar el nivel superior como éste

Proyectos contiene todos los proyectos individuales o módulos lanzamientos sostiene etiquetas de liberación que involucran múltiples módulos Usuarios sostiene ramas privados del usuario administración lleva a cabo mi scripts gancho, scripts de copia de seguridad, etc.

Las etiquetas de publicación son útiles si tiene un producto compuesto por varios módulos que pueden ser etiquetas diferentes para una versión específica (un anillo para unirlas y todo eso). Hace que sea fácil para el depósito de garantía de origen y para los desarrollos hacer referencia a lo que compone el lanzamiento 1 o 2.

Cuestiones relacionadas