Selama beberapa tahun terakhir saya telah bekerja dengan beberapa sistem kontrol versi yang berbeda. Bagi saya, salah satu perbedaan mendasar di antara mereka adalah apakah mereka versi file secara individual (masing-masing file memiliki penomoran versi dan sejarah yang terpisah) atau repositori secara keseluruhan ("komit" atau versi mewakili snapshot dari seluruh repositori) .
Beberapa sistem kontrol versi "per-file":
- CVS
- ClearCase
- SourceSafe Visual
Beberapa sistem kontrol versi "seluruh repositori":
- SVN
- Git
- Lincah
Dalam pengalaman saya, sistem kontrol versi per file hanya menyebabkan masalah, dan memerlukan lebih banyak konfigurasi dan pemeliharaan untuk digunakan dengan benar (misalnya, "spesifikasi konfigurasi" di ClearCase). Saya memiliki banyak contoh rekan kerja yang mengubah file yang tidak terkait dan melanggar apa yang idealnya merupakan jalur pengembangan yang terisolasi.
Apa keuntungan dari sistem kontrol versi per file ini? Masalah apa yang dimiliki sistem kontrol versi "seluruh repositori" yang tidak dimiliki sistem kontrol versi per file?
sumber
Jawaban:
Dalam pengalaman saya, tidak ada: VCS "seluruh-repositori" secara ketat mendominasi "per-file" VCS.
sumber
Per file memiliki keuntungan ketika Anda membangun lini produk (beberapa produk perangkat lunak) dari repositori yang sama.
Beberapa lingkungan kontrak pelanggan memerlukan bukti bahwa kode mereka HANYA memiliki perubahan yang mereka inginkan, dan bukan perubahan lainnya. Ini cukup mudah jika nomor versi file masih sama.
Dan ini bukan contoh acak yang saya tarik keluar dari udara tipis.
Ini terjadi terakhir kali saya mengirim pembaruan perangkat lunak ke tentara AS untuk sistem yang mereka beli dalam jumlah besar dari perusahaan saya sebelumnya. Nilai dolar kontrak diukur dalam pecahan miliaran dolar (saat dolar AS jauh lebih berharga)
Jadi itu membantu beberapa kali.
Anehnya: tempat saya bekerja sekarang, kami juga mengirimkan barang yang berbeda kepada setiap pelanggan .... (Dan itu bukan sesuatu yang saya putuskan, jika Anda bertanya-tanya.)
Saya menduga itu jauh lebih umum di pertahanan / ruang angkasa daripada di shrink-wrap atau aplikasi web.
sumber
git
bahkan dapat membedakan antara pembuat dan pengangkat, sehingga Anda dapat menyimpan repositori yang diaudit di mana Anda tahu siapa yang membuat tambalan (penulis) dan siapa yang mengauditnya (pengangkut). Berikan kami situasi yang patut dicontoh dan saya akan membalik -1 saya.Tidak ada keuntungan apa pun untuk versi per file.
The kerugian di sisi lain, banyak dan nyata.
sumber
Saya dapat mengatakan bahwa sistem kontrol versi "per-file" tidak memiliki kelebihan yang jelas selain penerapan VCS. Coders VCS akan senang untuk kode ketika itu adalah versi "per-file". Saya setuju dengan hal itu, itu muncul secara historis.
sumber
Tidak ada keuntungan pada pendekatan per file ketika Anda memiliki file terkait. Yang merupakan kasus paling umum dalam pengaturan pengembangan.
Dalam beberapa kasus khusus - / etc atau. file di direktori home Anda di Unix adalah satu-satunya yang saya miliki secara rutin - Anda menangani (kebanyakan) file yang tidak terkait. Dan kemudian memiliki sistem yang bersikeras untuk menjaga sinkronisasi perubahan yang tidak terkait bisa menjadi gangguan.
sumber