在ArcGIS中作为Python开发项目团队工作吗?


14

我们有一个Python开发项目(ArcGIS 10)。该项目涉及工具箱,地图模板,图层文件,文件地理数据库模板(充当通过脚本导入到地图中的模板)和其他各种东西的混合体。

我们使用Eclipse作为源代码编辑器,并使用SVN作为源代码存储库。

尽管每个人都将所有文件(不是py文件)保存在一个同步项目中存在问题。通常,多人编辑该工具箱会弄乱该工具箱,然后调整模板文件,然后不为其他人更新模板文件,因为它们没有被检入。

在公司工具箱项目中拥有多个Python开发人员的组织中的人员如何确保对项目和所有不同文件进行正确版本控制和管理?还是整个项目都进入Eclipse(包括模板层和脚本使用的GDB)进入项目并希望人们正确签出文件的情况?


因此,您目前拥有SVN中的所有内容(模板,图层文件,源代码,工具箱)吗?是某些人没有正确检查的问题吗?
乍得·库珀2012年

图层文件和模板数据集除外。是的,它们没有在完成时签入,并且在Eclipse中,您也必须(据我所知)手动更新到最新版本以获取文件的最新版本(例如tbx)。我只是想知道其他人是否有更聪明的方法来做到这一点,那么我们目前正在尝试
Rob

Answers:


5

如果我知道我要与其他开发人员一起工作,那么我今天要做的第一件事就是安装像Jenkins这样的Continuos Integration服务器。

这样做的想法是每次签入后始终触发您的测试套件,如果失败,您将立即收到一封自动电子邮件。在您的情况下,它可能是一个简单的Selenium脚本。这会在浏览器或一些可自动执行ArcMap的ArcObjects脚本周围单击。关于硒有一些演讲。

关于Jenkins的最酷的事情是,有几个插件可以让您集成/利用其他技术(构建系统,棉绒等)。您可以获得关于测试涵盖了多少代码的出色报告。它们真的很容易设置

就个人而言,我喜欢与Git和GitHub集成,而不是SVN ...这样做有很多好处,例如依赖GitHub进行身份验证。

但是,当然,第一步是让Jenkins运行。如果您从未做过,请保留一天并多呼吸,因为它可能很古怪...但是一旦运行起来,它真的很棒。


7

如果我了解得很好,您的问题之一就是开发人员未正确使用SVN,这会导致SVN存储库中的内容不稳定。

因此,也许您可​​以尝试一些方法:

设置明确的存储库使用策略

向所有开发人员明确说明使用存储库的方式以及何时以及提交什么内容。因此,存储库始终具有项目的工作副本

使用分布式控制系统

如果您使用像GitMercurial这样的分布式控制系统,则每个用户都可以提交到其存储库,并且仅在确定其版本可用时才将其版本发送到集中式版本,甚至可以为每个用户设置提交窗口,以便他们不要踩到彼此的代码。

话虽如此,在您的情况下,我会选择Mercurial,因为它是用Python开发的,您可以创建钩子以使其适合您的需求。而且由于来自SVN的学习曲线非常简单... hginit教程是一个很好的起点,该教程实际上有一个称为SVN再教育的部分。


2

我认为您需要负责人和更多的责任感。我的建议是任命或招募工具箱的管理员。将公共工具箱及其空间中的所有内容都设为只读(管理员除外)。对于SVN空间之外的项目,管理员可以负责确保对所有项目进行测试,检入(或管理)。由于管理员将有机会查看人们在做什么,因此他/她将知道某人何时需要培训,即,他可以发现他人做事不当。


2

这是人员问题,而不是技术问题。该工具箱和模板文件正在源代码管理外部进行编辑,因此无法对其进行控制。这些文件即使是二进制文件,也应该处于版本控制中,并且您不能进行比较或比较。根据Thumb的一般规则,任何不是从您的代码生成的,而是运行或编译该代码所需的任何内容,都应受“源代码管理”控制。

这样,整个项目将在源代码控制下,并且始终会有工作副本。开发人员应在锁定后编辑其本地版本的工具箱和模板,并在其本地副本正常工作时提交。

至于

...没有为其他人更新,因为他们没有重新签到

这是一个人的问题,除非您所有的开发人员都知道这为何如此重要,否则没有任何技术可以提供帮助。


2

通常,多人编辑该工具箱会弄乱该工具箱

对于此特定问题,我们将工具箱放在ArcSDE数据库中。我没有尝试使用其他类型的数据库!除非两个人同时编辑同一个工具,否则它的工作效果很好。与使用文件工具箱(.tbx)相比,问题要少得多。


您是说要在SDE中对工具箱进行版本控制,以便多个人可以同时编辑不同的工具?您使用此方法没有任何问题吗?
Cindy Jayakumar

不,我认为您无法对工具箱进行版本控制。您只需在SDE中创建一个工具箱。而且,多个人可以同时编辑不同的工具。很明显有两个问题,如果有人编辑了相同的工具,并且与ArcToolbox一样在工具箱(SDE)的开头加载了内容并将其保存在内存中,如果有人打开了自工具箱(SDE)开启以来已编辑的工具。可以将后者最小化,就像已知的那样,可以重新设置ArcMap或关闭SDE连接并重新打开它。希望这很清楚。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.