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

14

Tenemos un proyecto de desarrollo en Python (ArcGIS 10). Este proyecto involucra una mezcla 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.

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

Aunque tenemos un problema para mantener todos los archivos (que no son archivos py) en un proyecto sincronizado por todos. La caja de herramientas se desordena de manera rutinaria 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 es que las personas en organizaciones con más de un desarrollador de Python en un proyecto de caja de herramientas de la compañía se aseguran de que el proyecto y todos los diferentes archivos se versionen y administren correctamente? ¿O es un caso en el que todo va a Eclipse (incluidas las capas de plantilla y los GDB utilizados por los scripts) en el proyecto y esperamos que las personas revisen los archivos correctamente?

Robar
fuente
Entonces, ¿tiene todo actualmente en SVN (plantillas, archivos de capa, código fuente, cajas de herramientas)? ¿Es el problema que algunas personas simplemente no se registran correctamente?
Chad Cooper el
Excepto archivos de capa y conjuntos de datos de plantilla. Sí, no se registran cuando están terminados y también en Eclipse debe (hasta donde yo sé) actualizar manualmente a la última versión para obtener la última versión de un archivo (por ejemplo, tbx). Solo me pregunto si otros tienen una forma más inteligente de hacer esto, entonces lo estamos intentando en este momento
Rob

Respuestas:

5

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

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

Lo bueno de Jenkins es que hay varios complementos que le permiten integrar / aprovechar otras tecnologías (sistemas de compilación, pelusas, etc.) . Puede obtener informes increíbles sobre la cantidad de código que cubre la prueba. Son realmente fáciles de configurar .

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

Pero, por supuesto, el primer paso es hacer que Jenkins funcione. Si nunca lo ha hecho, reserve un día y respire mucho ya que puede ser muy peculiar ... pero una vez que lo tiene funcionando, es realmente increíble.

Ragi Yaser Burhum
fuente
7

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

Entonces quizás puedas probar un par de cosas:

Establecer una política clara de uso del repositorio

Deje en claro a todos los desarrolladores la forma de usar el repositorio y cuándo y qué comprometerse. Entonces el repositorio siempre tiene una copia de trabajo de del proyecto.

Use un sistema de control distribuido

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

Dicho esto, en su caso, optarí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 tutorial hginit , que en realidad tiene una sección llamada reeducación SVN.

pconcepcion
fuente
2

Creo que necesitas a alguien a cargo y más responsabilidad. Mi sugerencia sería nombrar o reclutar un administrador para la (s) caja (s) de herramientas. Haga que la caja de herramientas pública y todo lo que esté en su espacio sea de solo lectura, excepto para el administrador. El administrador puede ser responsable de asegurarse de que las cosas se prueben, se registren (o se administren, en el caso de elementos fuera del espacio SVN). Como 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 que hacen las cosas de manera incorrecta.

Piedad
fuente
2

Este es un problema de personas en lugar de un problema de tecnología. La caja de herramientas y los archivos de plantilla se están editando fuera de Source Control, por lo que no hay control sobre ellos. Estos archivos deben estar en control de versión a pesar de que son archivos binarios y no puede diferenciarlos ni compararlos. Como regla general, todo lo que no se genera a partir de su código, y que se requiere para ejecutar o compilar el código, debe estar bajo Control de código fuente.

De esa manera, todo el proyecto estará bajo el control de la fuente, 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 de bloquear y confirmar cuando su copia local esté funcionando.

En cuanto a

... no actualizado para otras personas ya que no se vuelven a registrar

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

Devdatta Tengshe
fuente
2

La caja de herramientas rutinariamente se confunde por varias personas que editan la caja de herramientas

Para este problema en particular, colocamos nuestra caja de herramientas en una base de datos 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).

jeb
fuente
¿Está diciendo que versiona la caja de herramientas en SDE para que varias personas puedan editar las diferentes herramientas al mismo tiempo? ¿No has tenido ningún problema con este enfoque?
Cindy Jayakumar
No, no creo que pueda versionar una caja de herramientas. Simplemente crea una caja de herramientas en SDE. Y varias personas pueden editar diferentes herramientas al mismo tiempo. Dos problemas, obviamente si alguien edita la misma herramienta y como ArcToolbox carga el contenido en la apertura de la caja de herramientas (SDE) y lo guarda en la memoria, si alguien más abre una herramienta que se ha editado desde la apertura de la caja de herramientas (SDE) . Lo último puede minimizarse como si se conociera, puede volver a desenterrar ArcMap o puede cerrar la conexión SDE y volver a abrirla. Espera que esto esté claro.
jeb