Arbeiten Sie als Python-Entwicklungsprojektteam mit ArcGIS?

14

Wir haben ein Entwicklungsprojekt in Python (ArcGIS 10). Dieses Projekt umfasst eine Mischung aus Toolboxes, Kartenvorlagen, Layer-Dateien, File-Geodatabase-Vorlagen (die als Vorlagen dienen, die durch Skripte in eine Karte importiert werden) und verschiedenen anderen Dingen.

Wir verwenden Eclipse als Quellcode-Editor und SVN als Quellcode-Repository.

Wir haben jedoch ein Problem damit, dass alle Dateien (die keine PY-Dateien sind) in einem synchronisierten Projekt von allen Benutzern gespeichert werden. Die Toolbox wird routinemäßig von mehreren Personen durcheinander gebracht, die die Toolbox bearbeiten, und die Vorlagendateien werden angepasst und dann für andere Personen nicht aktualisiert, da sie nicht wieder eingecheckt werden.

Wie stellen Personen in Organisationen mit mehr als einem Python-Entwickler in einem Toolbox-Projekt des Unternehmens sicher, dass das Projekt und alle verschiedenen Dateien versioniert und ordnungsgemäß verwaltet werden? Oder ist es ein Fall, in dem alles in Eclipse (einschließlich der von den Skripten verwendeten Vorlagenebenen und GDBs) in das Projekt einfließt und die Leute hoffen, dass sie die Dateien korrekt auschecken?

rauben
quelle
Sie haben also alles aktuell in SVN (Vorlagen, Layer-Dateien, Quellcode, Toolboxen)? Ist das Problem, dass einige Leute einfach nicht richtig einchecken?
Chad Cooper
Ausgenommen Layer-Dateien und Vorlagendatensätze. Ja, sie checken nicht ein, wenn sie fertig sind, und auch in Eclipse müssen Sie (soweit ich weiß) manuell auf die neueste Version aktualisieren, um die neueste Version einer Datei zu erhalten (z. B. tbx). Ich frage mich nur, ob andere eine intelligentere Möglichkeit haben, das zu tun, dann versuchen wir es im Moment
Rob,

Antworten:

5

Wenn ich weiß, dass ich mit anderen Entwicklern zusammenarbeiten werde, ist eines der ersten Dinge, die ich heutzutage tue, einen Continuos Integration- Server wie Jenkins einzurichten .

Die Idee ist, Ihre Testsuite immer nach jedem Einchecken auszulösen und Sie erhalten sofort eine automatisierte E-Mail, wenn sie fehlschlägt. In Ihrem Fall könnte es sich um ein einfaches Selenium-Skript handeln . Dies führt zu einem Klick in einem Browser oder einem ArcObjects-Skript, das ArcMap automatisiert. Es gibt verschiedene Präsentationen über Selen .

Das Coole an Jenkins ist, dass es mehrere Plugins gibt, mit denen Sie andere Technologien (Build-Systeme, Flusen usw.) integrieren / nutzen können . Sie können beeindruckende Berichte darüber erhalten, wie viel von Ihrem Code durch den Test abgedeckt wird. Sie sind sehr einfach einzurichten .

Ich persönlich mag es, anstelle von SVN in Git und GitHub zu integrieren. Es gibt mehrere Vorteile , wenn ich mich dabei auf GitHub als Authentifizierungsquelle stütze.

Aber der erste Schritt ist natürlich, Jenkins zum Laufen zu bringen. Wenn Sie es noch nie gemacht haben, reservieren Sie einen Tag und atmen Sie viel, da es sehr eigenartig sein kann ... aber wenn Sie es einmal laufen lassen, ist es wirklich großartig.

Ragi Yaser Burhum
quelle
7

Wenn ich das richtig verstanden habe, besteht eines Ihrer Probleme darin, dass Entwickler den SVN nicht richtig verwenden und dies den Inhalt im SVN-Repository instabil macht.

Vielleicht können Sie ein paar Dinge ausprobieren:

Legen Sie eine eindeutige Repository-Verwendungsrichtlinie fest

Machen Sie allen Entwicklern klar, wie das Repository verwendet werden soll und wann und was festgeschrieben werden soll. So Repository haben immer Arbeitskopie des Projekts.

Verwenden Sie ein verteiltes Steuerungssystem

Wenn Sie ein verteiltes Kontrollsystem wie Git oder Mercurial verwenden , kann jeder Benutzer ein Commit für sein Repository ausführen und seine Versionen nur dann an ein zentrales Repository senden, wenn er sicher ist, dass es funktioniert. Sie können möglicherweise sogar für jeden Benutzer ein Fenster für das Commit festlegen , damit die Benutzer es nicht ausführen nicht auf einander Code treten.

Wenn Sie dies sagen, würde ich in Ihrem Fall Mercurial wählen, da es in Python entwickelt wurde und Sie Hooks erstellen können, um es an Ihre Bedürfnisse anzupassen. Und weil die Lernkurve von SVN ziemlich einfach ist ... ist ein guter Ausgangspunkt ein Tutorial, das tatsächlich einen Abschnitt namens SVN-Umerziehung enthält.

pconcepcion
quelle
2

Ich denke, Sie brauchen jemanden, der die Verantwortung trägt, und mehr Rechenschaftspflicht. Mein Vorschlag wäre, einen Administrator für die Toolbox (s) zu ernennen oder zu rekrutieren. Machen Sie die öffentliche Toolbox und alles, was sich in ihrem Bereich befindet, mit Ausnahme des Administrators schreibgeschützt. Der Administrator kann dafür verantwortlich sein, dass die Dinge getestet, eingecheckt (oder verwaltet - im Fall von Objekten außerhalb des SVN-Bereichs) werden. Da der Administrator die Möglichkeit hat, zu sehen, was die Leute tun, weiß er, wann jemand eine Schulung benötigt, dh er kann Leute ertappen, die Dinge falsch machen.

Ruth
quelle
2

Dies ist eher ein Menschenproblem als ein Technologieproblem. Die Toolbox und die Vorlagendateien werden außerhalb der Quellcodeverwaltung bearbeitet, sodass keine Kontrolle darüber besteht. Diese Dateien sollten sich in der Versionskontrolle befinden, obwohl es sich um Binärdateien handelt und Sie sie nicht vergleichen oder vergleichen können. Als allgemeine Faustregel gilt, dass alles, was nicht aus Ihrem Code generiert wird und zum Ausführen oder Kompilieren des Codes erforderlich ist, der Quellcodeverwaltung unterliegen sollte.

Auf diese Weise wird das gesamte Projekt der Quellcodeverwaltung unterworfen und es wird immer eine Arbeitskopie vorhanden sein. Die Entwickler sollten die Toolbox und die Vorlage nach dem Sperren in ihrer lokalen Version bearbeiten und zurückschreiben, wenn ihre lokale Kopie funktioniert.

Wie zu

... für andere Personen nicht aktualisiert, da sie nicht wieder eingecheckt werden

Dies ist ein Menschenproblem, und wenn nicht alle Entwickler verstehen, warum dies wichtig ist, wird keine Menge Technologie helfen.

Devdatta Tengshe
quelle
2

Die Toolbox wird routinemäßig von mehreren Personen durcheinander gebracht, die die Toolbox bearbeiten

Für dieses spezielle Problem haben wir unsere Toolbox in eine ArcSDE-Datenbank gestellt. Ich habe es nicht mit einem anderen Datenbanktyp versucht! Wenn nicht zwei Personen gleichzeitig dasselbe Werkzeug bearbeiten, funktioniert es hervorragend. Wirklich weniger Probleme als mit der Datei-Toolbox (.tbx).

jeb
quelle
Wollen Sie damit sagen, dass Sie die Toolbox in SDE versionieren, sodass mehrere Personen gleichzeitig die verschiedenen Tools bearbeiten können? Sie hatten keine Probleme mit diesem Ansatz?
Cindy Jayakumar
Nein, ich glaube nicht, dass Sie eine Toolbox versionieren können. Sie erstellen einfach eine Toolbox in SDE. Mehrere Personen können gleichzeitig verschiedene Werkzeuge bearbeiten. Zwei Probleme, offensichtlich, wenn jemand dasselbe Werkzeug bearbeitet und als ArcToolbox den Inhalt beim Öffnen der Toolbox (SDE) lädt und im Speicher behält, wenn jemand anderes ein Werkzeug öffnet, das seit dem Öffnen der Toolbox (SDE) bearbeitet wurde . Letzteres kann minimiert werden, als ob es bekannt wäre. Sie können ArcMap neu starten oder die SDE-Verbindung schließen und erneut öffnen. Hoffe das ist klar.
31.