Pracujesz jako zespół projektowy ds. Rozwoju Python w ArcGIS?

14

Mamy projekt rozwoju w Pythonie (ArcGIS 10). Ten projekt obejmuje mieszankę przyborników, szablonów map, plików warstw, szablonów geobazy plików (działających jako szablony importowane do mapy za pomocą skryptów) i różnych innych rzeczy.

Używamy Eclipse jako naszego edytora źródłowego, a SVN jako naszego repozytorium kodów źródłowych.

Chociaż mamy problem z utrzymywaniem wszystkich plików (które nie są plikami py) w zsynchronizowanym projekcie przez wszystkich. Przybornik rutynowo zostaje pomieszany przez wiele osób edytujących przybornik, a następnie pliki szablonów są dostosowywane, a następnie nie aktualizowane dla innych osób, ponieważ nie są ponownie wpisywane.

W jaki sposób osoby w organizacjach, które mają więcej niż jednego programistę Python w firmowym projekcie przybornika, upewniają się, że projekt i wszystkie różne pliki są odpowiednio wersjonowane i zarządzane? A może dzieje się tak w przypadku, gdy wszystko przechodzi do Eclipse (w tym warstw szablonów i GDB używanych przez skrypty) do projektu i ma nadzieję, że ludzie poprawnie sprawdzą pliki?

Obrabować
źródło
Więc masz wszystko w SVN (szablony, pliki warstw, kod źródłowy, skrzynki na narzędzia)? Czy problem polega na tym, że niektóre osoby po prostu nie odprawiają się prawidłowo?
Chad Cooper
Z wyjątkiem plików warstw i zestawów danych szablonów. Tak, nie sprawdzają się po zakończeniu, a także w Eclipse musisz (o ile wiem) ręcznie zaktualizować do najnowszej wersji, aby uzyskać najnowszą wersję pliku (np. Tbx). Zastanawiam się tylko, czy inni mają mądrzejszy sposób na zrobienie tego, więc próbujemy w tej chwili
Rob

Odpowiedzi:

5

Jeśli wiem, że zamierzam współpracować z innymi programistami, jedną z pierwszych rzeczy, które robię obecnie, jest konfiguracja serwera Continuos Integration , takiego jak Jenkins .

Chodzi o to, aby zawsze uruchamiać pakiet testowy po każdym zameldowaniu, a otrzymasz automatyczną wiadomość e-mail, jeśli się nie powiedzie. W twoim przypadku może to być prosty skrypt Selenium . Klika w przeglądarce lub w skrypcie ArcObjects, który automatyzuje ArcMap. Istnieje kilka prezentacji na temat Selenium .

Fajną rzeczą w Jenkins jest to, że istnieje kilka wtyczek, które pozwalają integrować / wykorzystywać inne technologie (budowanie systemów, kłaczki itp . ) . Możesz uzyskać niesamowite raporty o tym, ile twojego kodu obejmuje test. Są naprawdę łatwe w konfiguracji .

Osobiście, zamiast SVN, lubię integrować się z Git i GitHub ... istnieje kilka zalet robienia tego, takich jak poleganie na GitHub do uwierzytelniania.

Ale oczywiście pierwszym krokiem jest uruchomienie Jenkinsa. Jeśli nigdy tego nie robiłeś, zastanów się pewnego dnia i oddychaj dużo, ponieważ może być bardzo dziwaczny ... ale kiedy już go uruchomisz, jest naprawdę niesamowity.

Ragi Yaser Burhum
źródło
7

Jeśli dobrze zrozumiałem, jednym z problemów jest to, że programiści nie używają poprawnie SVN, co powoduje niestabilność zawartości repozytorium SVN.

Więc może możesz spróbować kilku rzeczy:

Ustaw jasne zasady korzystania z repozytorium

Wyjaśnij wszystkim programistom, jak korzystać z repozytorium oraz kiedy i co należy zatwierdzić. Dlatego repozytorium zawsze ma roboczą kopię projektu.

Użyj rozproszonego systemu sterowania

Jeśli korzystasz z rozproszonego systemu kontroli, takiego jak Git lub Mercurial , każdy użytkownik może zatwierdzić swoje repozytorium i wysłać swoje wersje do scentralizowanego tylko wtedy, gdy jest pewien, że zadziała, możesz nawet ustawić okna zatwierdzania dla każdego użytkownika, aby nie stąpajcie po sobie nawzajem.

Mówiąc to, w twoim przypadku wybrałbym Mercurial, ponieważ jest on opracowany w Pythonie i możesz tworzyć haki, aby dostosować go do twoich potrzeb. A ponieważ krzywa uczenia się z SVN jest dość łatwa ... dobrym pomysłem na początek jest tutorial hginit , który zawiera sekcję zwaną reedukacją SVN.

pconcepcion
źródło
2

Myślę, że potrzebujesz kogoś odpowiedzialnego i większej odpowiedzialności. Moją sugestią byłoby wyznaczyć lub zrekrutować administratora dla zestawów narzędzi. Ustaw publiczny zestaw narzędzi i wszystko w jego przestrzeni tylko do odczytu, z wyjątkiem administratora. Administrator może być odpowiedzialny za upewnienie się, że rzeczy są testowane, sprawdzane (lub zarządzane - w przypadku elementów poza przestrzenią SVN). Ponieważ administrator będzie miał okazję zobaczyć, co robią ludzie, będzie wiedział, kiedy ktoś potrzebuje szkolenia, tj. Może złapać ludzi, którzy robią rzeczy w niewłaściwy sposób.

Litość
źródło
2

Jest to raczej problem ludzi niż technologii. Przybornik i pliki szablonów są edytowane poza kontrolą źródła, więc nie ma nad nim kontroli. Pliki te powinny podlegać kontroli wersji, nawet jeśli są plikami binarnymi i nie można ich porównywać ani porównywać. Zgodnie z ogólną zasadą wszystko, co nie jest generowane z kodu i jest wymagane do uruchomienia lub kompilacji kodu, powinno znajdować się pod kontrolą źródła.

W ten sposób cały projekt będzie pod kontrolą źródła i zawsze będzie kopia robocza. Programiści powinni edytować przybornik i szablon w wersji lokalnej po zablokowaniu i zatwierdzić ponownie, gdy ich kopia lokalna działa.

Co się tyczy

... nie jest aktualizowany dla innych osób, ponieważ nie są ponownie zalogowani

Jest to problem ludzi i chyba że wszyscy programiści zrozumieją, dlaczego jest to ważne, żadna technologia nie pomoże.

Devdatta Tengshe
źródło
2

Przybornik rutynowo zostaje pomieszany przez wiele osób edytujących przybornik

W przypadku tego konkretnego problemu umieściliśmy nasz zestaw narzędzi w bazie danych ArcSDE. Nie próbowałem z innym typem bazy danych! O ile dwie osoby nie edytują tego samego narzędzia w tym samym czasie, działa świetnie. Naprawdę mniej problemów niż z przybornikiem plików (.tbx).

jeb
źródło
Czy mówisz, że aktualizujesz zestaw narzędzi w SDE, aby wiele osób mogło edytować różne narzędzia jednocześnie? Nie miałeś żadnych problemów z tym podejściem?
Cindy Jayakumar,
Nie, nie sądzę, że można zaktualizować zestaw narzędzi. Po prostu tworzysz zestaw narzędzi w SDE. Wiele osób może jednocześnie edytować różne narzędzia. Dwa problemy, oczywiście jeśli ktoś edytuje to samo narzędzie i jako ArcToolbox wczytuje zawartość przy otwarciu przybornika (SDE) i zachowuje ją w pamięci, jeśli ktoś inny otworzy narzędzie, które było edytowane od momentu otwarcia przybornika (SDE) . Później można zminimalizować, tak jakby to było znane, możesz ponownie uruchomić ArcMap lub zamknąć połączenie SDE i ponownie je otworzyć. Mam nadzieję, że to jasne.
jeb