Bagaimana seharusnya kode dalam kontrol versi disimpan?


19

Bagaimana seharusnya kode dalam kontrol versi disimpan?

Ramah pengembang ? sehingga programmer dapat dengan cepat mengambil yang terbaru dan dapat dijalankan dari editornya tanpa melakukan banyak perubahan? (seperti file config yang menunjuk ke dev DB..etc)

atau

Haruskah itu ramah produksi ? sumber harus dengan cara yang mudah digunakan pada lingkungan produksi dan ketika pengembang mengambil yang terbaru, ia harus melakukan perubahan sesuai kebutuhan pengembangannya.

Jawaban:


56

Mengapa memilih? Itu harus keduanya.

Lingkungan pengembangan Anda harus dikonfigurasi sehingga semudah melakukan checkout, buka, bangun, jalankan, debug (mis: tidak ada jalur absolut!). Anda dapat melakukannya dengan mudah dengan arahan kompilasi, kelas konfigurasi + injeksi ketergantungan, atau bahkan trik seperti perso.config di ASP.NET

Skrip pembuatan otomatis Anda harus disesuaikan agar dapat menangani konfigurasi produksi tertentu, pembersihan, pengemasan, dll.


Apa itu perso.config? Google cepat tidak membantu saya.
Tim Murphy

1
Dalam file konfigurasi aplikasi .NET, Anda dapat referensi file konfigurasi aplikasi lain yang ketika ditemukan, akan menimpa pengaturan yang ditentukan. Jadi Anda dapat membuat file dev.config yang menimpa hal-hal seperti string koneksi dan hal-hal lain, dan mengecualikannya dari repo.

5
+1 - pengembang seharusnya tidak berpikir untuk mendapatkan sumber yang benar. Juga penyebaran produksi tidak boleh terjadi langsung dari kontrol sumber, tetapi dengan potongan yang dibangun, diuji, dan dapat dilacak dengan baik . Proses ini harus sepenuhnya otomatis.

9

Ketika ini adalah proyek open source di mana orang-orang diharapkan untuk berkontribusi, saya pasti akan memilih ramah pengembang.

Ketidaksukaan terbesar saya tentang proyek-proyek sumber terbuka adalah bahwa repositori sangat jarang mengandung semua dependensi yang diperlukan untuk membangun kode (kadang-kadang karena alasan praktis atau hukum), tetapi ketika tidak - beberapa bahkan tidak repot-repot memberi tahu Anda apa dependensi Anda perlu, atau yang lebih penting, versi mana dari yang Anda butuhkan. (dan lebih baik dari mana mendapatkannya)

Terkadang Anda dapat menghabiskan lebih dari setengah hari untuk mengambil dan menyusun beberapa proyek lain untuk membangun proyek yang Anda cari.

Tentu saja, ini benar-benar hanya relevan untuk pengembangan di Windows.


1
Itu mengganggu saya. Anda bahkan menemukannya di OSS yang sangat terkenal.
Tim Murphy

1
Ada sistem yang mengatasi masalah itu dengan secara otomatis mengambil dependensi. Misalnya Apache Maven, Ivy atau scon.
sleske

4

Keduanya, tetapi itu tergantung pada seberapa sering Anda membuat produksi. Untuk banyak aplikasi yang disesuaikan, penyebaran dilakukan secara manual dan lokal. Di sisi lain, pengembang akan terus melakukan kode, tidak peduli seberapa kecil atau besar proyek tersebut. Menurut pendapat saya, saya pikir lebih penting untuk memastikan pengembang dapat menggunakan kontrol versi dengan benar, sehingga membuat hidup mereka lebih mudah sehingga mereka akan memiliki waktu untuk fokus pada kode daripada menemukan jalan melalui kontrol versi.


Penerapan produksi harus menjadi masalah jika Anda menggunakan mesin penyebaran berkelanjutan untuk membangun.

1

Itu harus ramah-produksi, jika tidak maka akan bermasalah untuk mempertahankan pembuatan otomatis.


8
Mengapa? Skrip pembuatan otomatis dapat membuat semua terjemahan yang diperlukan untuk merestrukturisasi sumber menjadi bentuk yang bisa digunakan. Jangan pernah repot-repot orang dengan sesuatu yang otomatisasi dapat pecahkan.
Joeri Sebrechts

1

Saya siap menurunkan gesekan sehingga pekerjaan lebih mudah diselesaikan, tetapi Anda juga harus mempertimbangkan mode kegagalan.

Jika versi repositori sumber selalu dikonfigurasi untuk penggunaan produksi, apa hasil dari pengembang gagal untuk mengkonfigurasi ulang sebelum menjalankan sistem? Pengembang menjalankan kode terhadap produksi.

Terlepas dari apakah ada hambatan lain dalam cara pengembang membuat perubahan acak pada produksi, membangun dalam mode kegagalan yang mendorongnya terjadi tampaknya berbahaya.

Saya menyarankan agar nilai default yang dimasukkan dalam kode yang dikomit harus selalu aman . Periksa file konfigurasi produksi ke dalam kontrol sumber juga, jika Anda suka - saya hampir selalu melakukannya - tetapi simpan di tempat "tidak hidup".


0

Saya cenderung berusaha untuk ramah produksi. Itu membuat bangunan Anda bersih dan mencegah pengaturan asing membuatnya menjadi produksi.


0

Ramah bagi pengembang, dengan skrip untuk mengotomatisasi perubahan untuk QA & produksi.


-1

Mengapa tidak memiliki cabang (tergantung kontrol versi apa yang Anda gunakan - Saya menggunakan Git) untuk kode yang dapat digunakan dan lainnya untuk versi siap pengembang? Ini terdengar jauh lebih baik dan tidak sulit untuk dipasang.

Anda dapat bekerja dan mengkomit perubahan Anda dan kemudian menggabungkannya pada versi yang bisa digunakan.


Karena cabang yang berumur panjang mahal untuk dikelola dan cenderung sulit untuk digabungkan. Anda harus ingat untuk membuat semua perubahan di kedua cabang. Jauh lebih baik untuk membuat kedua versi sama dan / atau memiliki skrip untuk menghasilkan artifcat yang dapat digunakan dari kode siap pengembang.
bdsl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.