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?
sumber
Jawaban:
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.
sumber
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.
sumber
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.
sumber
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
Ini adalah masalah orang, dan kecuali semua pengembang Anda memahami mengapa ini penting, tidak ada teknologi yang dapat membantu.
sumber
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).
sumber