2009-04-14 18 views
7

Estoy pensando en una lista que podría referir a otros desarrolladores con cosas como:¿Qué son las mejores prácticas de gestión de configuración y control de origen?

  1. Un script de construcción, tales como makefile, va a construir y probar todo el proyecto
  2. Todos los componentes para construir necesaria el sistema necesita ser controlado por fuente

¿Alguien tiene esa lista? En orden de prioridad?


ACTUALIZACIÓN - añadió algo de detalle FYI Sistema

en cuestión consiste en C++ y archivos make, Java con la hormiga que se traduce en guerras, así como componentes GUI PowerBuilder y C#. Todo el código es forzosamente

Estoy buscando tanto mejores prácticas genéricas como específicas del idioma.

Respuesta

7

Para mí, la regla # 1 es la siguiente:

La rama principal es sagrada - que siempre debe ser edificable, capaz de pasar de BVT, y ser básicamente utilizables.

Cualquier código que se permite entrar en la rama principal que causa una compilación o ruptura de BVT expone un error en el proceso. El proceso debería permitir compilaciones/pruebas de compilación para sistemas de rama individuales, o requerir que las ramas secundarias construyan y superen los BVT antes de fusionarse en la rama principal, u otras protecciones similares.

+0

uhmm, si puedo preguntar, ¿qué es un BVT? – bluezald

1

¿Depende mucho del entorno en el que esté construyendo?

  • ¿Se encuentra en C/MakeFile?
  • ¿Es Java/JUnit/Ant?
  • ¿Es .NET/NUnit/NAnt?
  • ¿Es .NET/MSUnit/MSBuild?
  • ¿Es Rubí ...
  • ¿Es Python ...
  • ¿Es PHP

Cada uno de éstos difieren en el enfoque y la configuración. Por lo tanto, necesitamos conocer su configuración antes de que pueda ser ayudado.

+0

información adicional: El sistema en cuestión consiste en C++ y makefiles, Java con ant que da como resultado WAR, así como componentes de powerbuilder y C# gui. Todo el código es forzosamente Por lo tanto, estoy buscando prácticas recomendadas tanto genéricas como específicas del idioma. –

1

Mi número de un artículo:

  • actualización menudo, cometen a menudo,

o, como se pone Jeff es: Check In Early, Check In Often.

+1

Al leer los comentarios de esa entrada de blog, encontrará que no estoy de acuerdo con ese sentimiento. Los sistemas de control de revisión están diseñados para controlar revisiones de software, no para realizar copias de seguridad de ediciones intermedias. Un buen editor debería hacer eso por ti. (control de versiones en Emacs) –

+0

Bueno, esa es una discusión larga y honestamente no la leí porque no pude encontrar ningún punto nuevo relevante después de algunos comentarios. –

0

Si pasa las preguntas del "Test de Joel", usted debe estar en el camino correcto:

¿Utiliza control de código fuente?
¿Hace compilaciones diarias?
¿Tiene una base de datos de errores?
¿Soluciona errores antes de escribir un nuevo código?

Mi número 1 es: ¿Se puede construir en un solo paso?

The Joel Test

0

Al ser un gestor de SMC, la mejor respuesta que puedo dar sobre esta cuestión es "depende". La lista y el orden de importancia de los elementos de la lista dependerán de los requisitos de su proyecto, el idioma que esté utilizando y el nivel de desarrollador.

Una cosa que es posible que desee considerar importante (o n. ° 1) en CUALQUIER lista que junte es que el tronco o la rama principal de su herramienta están muy controlados y solo unos pocos tienen acceso a importar o cometer cambios a este. Esto ahorrará un montón de dolores de cabeza en el momento de la liberación.

Los productos que pueden estar en cualquier lista que ponen juntos es:

  • Cuando el registro de entrada (diaria, semanal, más a menudo, con menos frecuencia)
  • Cuando compilaciones son hecho (diaria, semanal, etc.)
  • El uso de repositorios duales (ingeniería vs producción)
  • Permitir archivos binarios en el repositorio
  • Permitir software de terceros en el repositorio
  • Todos los elementos necesarios para la construcción en el repositorio
  • Cuando las importaciones o se compromete al tronco se hacen
  • Uso de un archivo a exportar y construir
  • Permitir el registro de entrada con/sin información de informe de error
  • cumplir el registro de entrada comentario estándares

La lista puede seguir y seguir dependiendo de sus requisitos específicos, pero creo que se hace una idea general de lo que hay aquí.

1

El sistema debe compilar por sí solo, probar por sí mismo y descargar + construir dependencias por sí mismo. Tengo un makefile que descarga, crea y despliega un entorno de tiempo de ejecución que está "certificado" para mi versión troncal. Este archivo MAKE está comprometido también en el repositorio.

Recuerde a cometer otro, muy importante, y en su mayoría se pasa por alto que (viene en un paquete de tres): (poner una versión en ella)

  • El código SQL que crea su diseño de base de datos.
  • El código SQL que trae su versión de diseño de base de datos (actualizar)
  • El código SQL que bajar su versión de diseño de base de datos (de rebajar)
0

Todo el proceso de "conseguir la última" y "construir" debe ser suave, fácil, rápido y confiable.

Si no, los desarrolladores tienden a omitir obtener lo último y seguir trabajando en sus copias obsoletas y eso es algo que desea evitar.

Esto es más o menos lo que Michael dicho- pero quiero hacer hincapié en que más allá de la rama que se está estable- sagrado y todo el proceso debe ser rápido y fácil

Un poco como la filosofía de Google que las descargas \ instalaciones deben ser rápidos y fácil

Cuestiones relacionadas