Trabalhando como equipe de projeto de desenvolvimento Python com ArcGIS?

14

Temos um projeto de desenvolvimento em Python (ArcGIS 10). Este projeto envolve uma mistura de caixas de ferramentas, modelos de mapas, arquivos de camadas, modelos de geodatabase de arquivos (atuando como modelos sendo importados para um mapa por scripts) e várias outras coisas.

Usamos o Eclipse como nosso editor de código-fonte e o SVN como nosso Repositório de Código-Fonte.

Embora tenhamos um problema em manter todos os arquivos (que não são arquivos py) em um projeto sincronizado por todos. A caixa de ferramentas é rotineiramente desarrumada por várias pessoas editando a caixa de ferramentas e, em seguida, os arquivos de modelo são ajustados e, em seguida, não são atualizados para outras pessoas, pois não são devolvidos.

Como as pessoas nas organizações com mais de um desenvolvedor python em um projeto de caixa de ferramentas da empresa garantem que o projeto e todos os arquivos diferentes sejam versionados e gerenciados corretamente? Ou é um caso de tudo o que entra no Eclipse (incluindo camadas de modelo e GDBs usados ​​pelos scripts) no projeto e espero que as pessoas verifiquem os arquivos corretamente?

Roubar
fonte
Então você tem tudo no SVN atualmente (modelos, arquivos de camada, código fonte, caixas de ferramentas)? O problema é que algumas pessoas simplesmente não estão fazendo o check-in corretamente?
Chad Cooper
Exceto arquivos de camada e conjuntos de dados de modelo. Sim, eles não estão fazendo check-in quando terminam e também no Eclipse, você deve (tanto quanto eu sei) atualizar manualmente a versão mais recente para obter a versão mais recente de um arquivo (por exemplo, tbx). Eu só estou querendo saber se outras pessoas têm uma maneira mais inteligente de fazer isso, então estamos tentando no momento
Rob

Respostas:

5

Se eu sei que vou trabalhar com outros desenvolvedores, uma das primeiras coisas que faço hoje em dia é configurar um servidor de integração da Continuos como o Jenkins .

A idéia é sempre acionar sua suíte de testes após cada check-in e você receberá um email automatizado imediatamente, se falhar. No seu caso, poderia ser um simples script Selenium . Isso clica no navegador ou em algum script do ArcObjects que automatiza o ArcMap. Existem várias apresentações por aí sobre o Selenium .

O interessante do Jenkins é que existem vários plugins que permitem integrar / alavancar outras tecnologias (sistemas de compilação, fiapos etc.) . Você pode obter relatórios impressionantes sobre quanto do seu código está sendo coberto pelo teste. Eles são realmente fáceis de configurar .

Pessoalmente, em vez do SVN, eu gosto de integrar o Git e o GitHub ... há várias vantagens em fazer isso, como confiar no GitHub para autenticação.

Mas é claro, o primeiro passo é fazer Jenkins correr. Se você nunca fez isso, reserve um dia e respire muito, pois pode ser muito peculiar ... mas depois de executá-lo, é realmente incrível.

Ragi Yaser Burhum
fonte
7

Se entendi bem, um dos seus problemas é que os desenvolvedores não estão usando corretamente o SVN e isso deixa o conteúdo do repositório SVN instável.

Então, talvez você possa tentar algumas coisas:

Definir uma política clara de uso do repositório

Deixe claro para todos os desenvolvedores a maneira de usar o repositório e quando e o que confirmar. Portanto, o repositório sempre tem cópia de trabalho do projeto.

Use um sistema de controle distribuído

Se você usar um sistema de controle distribuído como Git ou Mercurial , cada usuário poderá se comprometer com seu repositório e enviar suas versões apenas para uma centralizada quando tiver certeza de que funcionará. Você pode até definir janelas de confirmação para cada usuário, para pise no código um do outro.

Dizendo isso, no seu caso, eu optaria pelo Mercurial, porque ele foi desenvolvido em Python e você pode criar ganchos para adaptá-lo às suas necessidades. E como a curva de aprendizado do SVN é bastante fácil ... um bom ponto de partida é o tutorial hginit , que na verdade tem uma seção chamada reeducação do SVN.

pconcepcion
fonte
2

Eu acho que você precisa de alguém no comando e mais responsabilidade. Minha sugestão seria nomear ou recrutar um administrador para as caixas de ferramentas. Torne a caixa de ferramentas pública e tudo em seu espaço somente leitura, exceto para o administrador. O administrador pode ser responsável por garantir que as coisas sejam testadas, registradas (ou gerenciadas - no caso de itens fora do espaço SVN). Como o administrador terá a chance de ver o que as pessoas estão fazendo, ele saberá quando alguém precisar de treinamento, ou seja, ele poderá pegar pessoas fazendo as coisas de maneira inadequada.

Ruth
fonte
2

Este é um problema de pessoas e não de tecnologia. A caixa de ferramentas e os arquivos de modelo estão sendo editados fora do Source Control, portanto, não há controle sobre ela. Esses arquivos devem estar no controle de versão, mesmo sendo binários e você não pode diferenciá-los ou compará-los. Como regra geral, qualquer coisa que não seja gerada a partir do seu código e seja necessária para executar ou compilar o código deve estar sob Controle de Origem.

Dessa forma, todo o projeto estará sob o controle de origem e sempre haverá uma cópia de trabalho. Os desenvolvedores devem editar a caixa de ferramentas e o modelo na versão local após o bloqueio e confirmar quando a cópia local estiver funcionando.

Quanto a

... não atualizado para outras pessoas, pois elas não são devolvidas

Esse é um problema para as pessoas e, a menos que todos os seus desenvolvedores entendam por que isso é importante, nenhuma quantidade de tecnologia ajudará.

Devdatta Tengshe
fonte
2

A caixa de ferramentas é rotineiramente desarrumada por várias pessoas editando a caixa de ferramentas

Para esse problema em particular, colocamos nossa caixa de ferramentas em um banco de dados ArcSDE. Eu não tentei com outro tipo de banco de dados! A menos que duas pessoas editem a mesma ferramenta ao mesmo tempo, ela funciona muito bem. Muito menos problemas do que com a caixa de ferramentas de arquivo (.tbx).

jeb
fonte
Você está dizendo que versão da caixa de ferramentas no SDE para que várias pessoas possam editar as diferentes ferramentas ao mesmo tempo? Você não teve problemas com essa abordagem?
Cindy Jayakumar
Não, acho que você não pode criar uma versão de uma caixa de ferramentas. Você acabou de criar uma caixa de ferramentas no SDE. E várias pessoas podem editar ferramentas diferentes ao mesmo tempo. Dois problemas, obviamente, se alguém editar a mesma ferramenta e o ArcToolbox carregar o conteúdo na abertura da caixa de ferramentas (SDE) e mantê-lo na memória, se alguém abrir uma ferramenta que foi editada desde a abertura da caixa de ferramentas (SDE) . O posterior pode ser minimizado como se fosse conhecido, você pode reiniciar o ArcMap ou fechar a conexão SDE e reabri-la. Espera que isso esteja claro.
jeb