¿Trabaja como un equipo de proyecto de desarrollo de Python con ArcGIS?

14

Tenemos un proyecto de desarrollo en Python (ArcGIS 10). Este proyecto incluye una combinación de cajas de herramientas, plantillas de mapas, archivos de capas, plantillas de geodatabase de archivos (que actúan como plantillas que se importan en un mapa mediante scripts) y varias otras cosas.

Usamos Eclipse como nuestro editor de fuentes y SVN como nuestro repositorio de código fuente.

Aunque tenemos un problema con mantener todos los archivos (que no son archivos py) en un proyecto sincronizado por parte de todos. La caja de herramientas se desordena habitualmente por varias personas que editan la caja de herramientas y luego los archivos de plantilla se ajustan y luego no se actualizan para otras personas, ya que no se vuelven a registrar.

¿Cómo se aseguran las personas en las organizaciones con más de un desarrollador de Python en un proyecto de la caja de herramientas de la empresa para garantizar que el proyecto y todos los diferentes archivos se versionen y gestionen correctamente? ¿O es un caso en el que todo va a Eclipse (incluidas las capas de plantillas y los GDB utilizados por los scripts) en el proyecto y espera que la gente verifique los archivos correctamente?

    
pregunta Rob 19.11.2012 - 13:48

5 respuestas

5

Si sé que voy a trabajar con otros desarrolladores, una de las primeras cosas que hago hoy en día es configurar una Integración continua servidor como Jenkins .

La idea es activar siempre el conjunto de pruebas después de cada registro y recibirá un correo electrónico automático de inmediato si falla. En su caso, podría ser un simple secuencia de comandos de Selenium . Eso hace clic alrededor de un navegador, o algún script de ArcObjects que automatiza ArcMap. Hay varias presentaciones sobre el Selenio .

Lo bueno de Jenkins, es que hay varios complementos que te permiten integrar / aprovechar otras tecnologías (compilación sistemas, pelusas, etc) . Puede obtener informes asombrosos sobre cuánto de su código está siendo cubierto por la prueba. Son muy fácil de configurar .

Personalmente, en lugar de SVN, me gusta integrar con Git y GitHub. ... hay varias ventajas de hacer esto como confiar en GitHub para la autenticación.

Pero, por supuesto, el primer paso es poner en funcionamiento a Jenkins. Si nunca lo has hecho, reserva un día y respira mucho ya que puede ser muy peculiar ... pero una vez que lo tienes en funcionamiento, es realmente increíble.

    
respondido por el Ragi Yaser Burhum 19.11.2012 - 19:50
7

Si entendí bien, uno de tus problemas es que los desarrolladores no están usando correctamente el SVN y esto permite que el contenido en el repositorio de SVN sea inestable.

Así que quizás puedas probar un par de cosas:

Establecer una política clara de uso del repositorio

Aclare a todos los desarrolladores la forma de usar el repositorio y cuándo y qué hacer. Por lo tanto, el repositorio siempre tiene una copia de trabajo del proyecto.

Usa un sistema de control distribuido

Si utiliza un sistema de control distribuido como Git o Mercurial , cada usuario puede comprometerse con su repositorio y solo enviar sus versiones a una centralizada cuando esté seguro de que funcionará, incluso puede configurar ventanas de confirmación para cada usuario para que no pisen el código de los demás.

Al decir esto, en su caso, apostaría por Mercurial, porque está desarrollado en Python y puede crear ganchos para adaptarlo a sus necesidades. Y debido a que la curva de aprendizaje de SVN es bastante fácil ... un buen punto para comenzar es el hginit , que en realidad tiene una sección llamada SVN re educación.

    
respondido por el pconcepcion 19.11.2012 - 20:12
2

Creo que necesitas a alguien a cargo y más responsabilidad. Mi sugerencia sería nombrar o contratar un administrador para la (s) caja (s) de herramientas. Haga que la caja de herramientas pública y todo en su espacio sean de solo lectura, excepto para el administrador. El administrador puede ser responsable de asegurarse de que las cosas se prueben, registren (o administren) en el caso de elementos fuera del espacio SVN). Dado que el administrador tendrá la oportunidad de ver lo que las personas están haciendo, él / ella sabrá cuándo alguien necesita capacitación, es decir, puede atrapar a las personas haciendo cosas de manera inadecuada.

    
respondido por el Ruth 21.11.2012 - 03:03
2

Este es un problema de personas más que un problema de tecnología. La caja de herramientas y los archivos de plantilla se editan fuera de Source Control, por lo que no hay control sobre ellos. Estos archivos deben estar en el control de versiones, aunque sean archivos binarios y no se puedan diferenciar o comparar. Como regla general de Thumb, cualquier cosa que no se genere a partir de su código y que se requiera para ejecutar o compilar el código, debe estar bajo el control de código fuente.

De esa manera, todo el proyecto estará bajo el control de origen, y siempre habrá una copia de trabajo. Los desarrolladores deben editar la caja de herramientas y la plantilla en su versión local después del bloqueo y confirmar cuando su copia local está funcionando.

En cuanto a

  

... no actualizado para otras personas, ya que no se verifican nuevamente

Este es un problema de personas y, a menos que todos los desarrolladores entiendan por qué esto es importante, ninguna cantidad de tecnología ayudará.

    
respondido por el Devdatta Tengshe 21.11.2012 - 07:17
2
  

La caja de herramientas se desordena habitualmente por varias personas que editan la caja de herramientas

Para este problema en particular, colocamos nuestra caja de herramientas en una base de datos de ArcSDE. No he probado con otro tipo de base de datos! A menos que dos personas editen la misma herramienta al mismo tiempo, funciona muy bien. Realmente menos problemas que con la caja de herramientas de archivos (.tbx).

    
respondido por el jeb 20.12.2012 - 05:26

Lea otras preguntas en las etiquetas