Bekerja sebagai Tim Proyek Pengembangan Python dengan ArcGIS?

14

Kami memiliki proyek pengembangan dengan Python (ArcGIS 10). Proyek ini melibatkan campuran kotak alat, templat peta, file layer, templat geodatabase file (bertindak sebagai templat yang diimpor ke peta oleh skrip) dan berbagai hal lainnya.

Kami menggunakan Eclipse sebagai editor sumber kami dan SVN sebagai Repositori Kode Sumber kami.

Meskipun kami memiliki masalah dengan menyimpan semua file (yang bukan file py) dalam proyek yang disinkronkan oleh semua orang. Toolbox secara rutin dikacaukan oleh beberapa orang yang mengedit toolbox dan kemudian file template disesuaikan dan kemudian tidak diperbarui untuk orang lain karena mereka tidak diperiksa kembali.

Bagaimana orang-orang di organisasi dengan lebih dari satu pengembang python pada proyek toolbox perusahaan memastikan bahwa proyek dan semua file yang berbeda mendapatkan versi dan dikelola dengan benar? Atau apakah ini merupakan kasus melalui semuanya masuk ke Eclipse (termasuk lapisan template dan GDB yang digunakan oleh skrip) ke dalam proyek dan berharap bahwa orang memeriksa file dengan benar?

rampok
sumber
Jadi Anda memiliki semuanya saat ini di SVN (template, file layer, kode sumber, kotak peralatan)? Apakah masalah yang dialami sebagian orang tidak masuk dengan benar?
Chad Cooper
Kecuali file layer dan dataset template. Ya mereka tidak memeriksa ketika mereka selesai dan juga di Eclipse Anda harus (sejauh yang saya tahu) memperbarui secara manual ke versi terbaru untuk mendapatkan versi terbaru dari file (misalnya tbx). Saya hanya ingin tahu apakah orang lain memiliki cara yang lebih pintar untuk melakukan ini maka kita sedang berusaha saat ini
Rob

Jawaban:

5

Jika saya tahu bahwa saya akan bekerja dengan pengembang lain, salah satu hal pertama yang saya lakukan saat ini adalah menyiapkan server Continuos Integration seperti Jenkins .

Idenya adalah untuk selalu memicu test suite Anda setelah setiap check-in dan Anda akan mendapatkan email otomatis segera jika gagal. Dalam kasus Anda, ini bisa berupa skrip Selenium sederhana . Itu mengklik browser, atau skrip ArcObjects yang mengotomatiskan ArcMap. Ada beberapa presentasi tentang Selenium di luar sana .

Yang keren tentang Jenkins, adalah bahwa ada beberapa plugin yang memungkinkan Anda untuk mengintegrasikan / meningkatkan teknologi lain (membangun sistem, serat, dll) . Anda bisa mendapatkan laporan yang luar biasa tentang seberapa banyak kode Anda dicakup oleh pengujian. Mereka sangat mudah diatur .

Secara pribadi, alih-alih SVN, saya ingin berintegrasi dengan Git dan GitHub ... ada beberapa keuntungan melakukan ini seperti mengandalkan GitHub untuk otentikasi.

Tapi tentu saja, langkah pertama adalah menjalankan Jenkins. Jika Anda belum pernah melakukannya, pesan satu hari dan banyak bernapas karena itu bisa sangat aneh ... tetapi setelah Anda menjalankannya, itu benar-benar luar biasa.

Ragi Yaser Burhum
sumber
7

Jika saya mengerti dengan baik, salah satu masalah Anda adalah bahwa pengembang tidak menggunakan SVN dengan benar dan ini, membuat konten dalam repositori SVN tidak stabil.

Jadi mungkin Anda dapat mencoba beberapa hal:

Tetapkan kebijakan penggunaan repositori yang jelas

Jelaskan kepada semua pengembang cara menggunakan repositori dan kapan dan apa yang harus dikomit. Jadi repositori selalu memiliki copy proyek yang berfungsi .

Gunakan sistem kontrol terdistribusi

Jika Anda menggunakan sistem kontrol terdistribusi seperti Git atau Mercurial , setiap pengguna dapat mengkomit ke repositori mereka dan hanya mengirim versi mereka ke yang terpusat ketika mereka yakin itu akan berfungsi, Anda mungkin bahkan dapat mengatur jendela komit untuk setiap pengguna sehingga mereka tidak saling menginjak kode yang lain.

Mengatakan ini, dalam kasus Anda, saya akan memilih Mercurial, karena dikembangkan dengan Python dan Anda dapat membuat kait untuk menyesuaikannya dengan kebutuhan Anda. Dan karena kurva belajar dari SVN itu cukup mudah ... titik yang baik untuk memulai adalah tutorial hginit , yang sebenarnya memiliki bagian yang disebut SVN pendidikan ulang.

konsepsi
sumber
2

Saya pikir Anda membutuhkan seseorang yang bertanggung jawab dan lebih banyak akuntabilitas. Saran saya adalah menunjuk atau merekrut administrator untuk kotak alat. Jadikan kotak alat publik dan semua yang ada di ruangnya hanya-baca kecuali untuk administrator. Administrator dapat bertanggung jawab untuk memastikan hal-hal diuji, diperiksa (atau dikelola - dalam hal item di luar ruang SVN). Karena administrator akan mendapatkan kesempatan untuk melihat apa yang dilakukan orang, dia akan tahu kapan seseorang membutuhkan pelatihan, yaitu, dia bisa menangkap orang melakukan hal-hal yang tidak benar.

Ruth
sumber
2

Ini adalah masalah orang daripada masalah teknologi. Kotak alat dan file templat sedang diedit di luar Kontrol Sumber, jadi tidak ada kendali atasnya. File-file ini harus dalam kontrol versi meskipun mereka adalah file biner dan Anda tidak dapat membedakan atau membandingkannya. Sebagai aturan umum dari Thumb, segala sesuatu yang tidak dihasilkan dari kode Anda, dan diperlukan untuk menjalankan atau mengkompilasi kode, harus di bawah Kontrol Sumber.

Dengan begitu seluruh proyek akan berada di bawah kendali sumber, dan akan selalu ada salinan yang berfungsi. Pengembang harus mengedit kotak alat dan templat dalam versi lokal mereka setelah mengunci dan mengkomit kembali ketika salinan lokal mereka berfungsi.

Mengenai

... tidak diperbarui untuk orang lain karena mereka tidak dicek kembali

Ini adalah masalah orang, dan kecuali semua pengembang Anda memahami mengapa ini penting, tidak ada teknologi yang dapat membantu.

Devdatta Tengshe
sumber
2

Toolbox secara rutin dikacaukan oleh banyak orang yang mengedit toolbox

Untuk masalah khusus ini, kami menempatkan kotak alat kami di Database ArcSDE. Saya belum mencoba dengan jenis database lain! Kecuali dua orang mengedit alat yang sama pada saat yang sama, itu berfungsi dengan baik. Benar-benar lebih sedikit masalah daripada dengan file toolbox (.tbx).

jeb
sumber
Apakah Anda mengatakan bahwa Anda membuat versi kotak alat di SDE sehingga banyak orang dapat mengedit alat yang berbeda secara bersamaan? Anda tidak memiliki masalah dengan pendekatan ini?
Cindy Jayakumar
Tidak, saya rasa Anda tidak bisa membuat versi toolbox. Anda cukup membuat kotak alat di SDE. Dan banyak orang dapat mengedit alat yang berbeda secara bersamaan. Dua masalah, jelas jika seseorang mengedit alat yang sama dan seperti ArcToolbox memuat konten pada pembukaan toolbox (SDE) dan menyimpannya di memori, jika orang lain membuka alat yang telah diedit sejak pembukaan toolbox (SDE) . Yang lebih baru dapat diminimalkan seolah-olah diketahui, Anda dapat memulai kembali ArcMap atau Anda dapat menutup koneksi SDE dan membukanya kembali. Semoga ini jelas.
jeb