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?
źródło
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło
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
Jest to problem ludzi i chyba że wszyscy programiści zrozumieją, dlaczego jest to ważne, żadna technologia nie pomoże.
źródło
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).
źródło