Apa kelebihan sistem kontrol versi yang membuat versi setiap file secara terpisah?


15

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?


3
Saya pikir itu terutama hanya secara historis seperti itu dan kita sekarang beralih dari berorientasi file ke sistem yang berorientasi pada perubahan, tetapi dari sudut pandang hari ini sulit untuk memahami mengapa orang bahkan mencoba pendekatan per-file. Pertanyaan yang sangat bagus!
blubb

Mohon maaf jika pertanyaan ini dianggap argumentatif. Ini adalah produk dari frustrasi baru-baru ini.
Mike Daniels

1
@ Mike Daniels: Tidak (setidaknya bagi saya) karena Anda jelas meminta keuntungannya.
blubb

Kedua sudut pandang ini hanyalah konvensi yang berbeda. Setiap argumen yang mendukung satu di atas yang lain hanya menimbulkan kontra-argumen dari partisan dari sisi lain. Misalnya, jika Anda menginginkan perilaku "seluruh rep" di Clearcase, Anda dapat mengubahsuaikan spesifikasi konfigurasi Anda menurut tanggal.
mouviciel

SVN memiliki versi per file, atau apakah itu berubah juga di versi terakhir?
Klaim

Jawaban:


12

Dalam pengalaman saya, tidak ada: VCS "seluruh-repositori" secara ketat mendominasi "per-file" VCS.


3

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.


3
Tetapi cabang repositori seluruh file juga akan memenuhi kebutuhan yang sama. Misalnya, dalam bzr, cabang sepenuhnya independen dari jalur utama hingga Anda bergabung (atau berbagi repositori).
edA-qa mort-ora-y

1
Saya tidak bisa memikirkan satu situasi di mana cabang dalam sistem 'seluruh-repositori' tidak akan lebih baik menyatakan keadaan yang diperlukan daripada mengandalkan keadaan eksternal ke VCS untuk menentukan file mana yang akan digunakan dalam VCS "per-file". Pekerjaan pertama saya setelah uni menggunakan RCS, banyak skrip untuk versi proyek dan skrip tingkat atas untuk versi skrip versi - mimpi buruk absolut, dan ya, itu untuk proyek militer juga. * 8 ')
Mark Booth

@Mark Booth, pelanggan tahu file apa yang bisa diubah untuk perbaikan apa yang mereka inginkan. Jadi audit konfigurasi fisik adalah dengan nomor kontrol versi
Tim Williscroft

Apa yang saya katakan adalah bahwa versi + patch yang diaudit memerlukan informasi yang berbeda di tempat yang berbeda, VCS dan auditor. Dengan cabang dalam sistem 'seluruh-repositori', kedua negara dicatat sebagai entitas yang terpisah. Sekarang informasi yang sama diduplikasi antara VCS dan sistem audit, dan harus selalu cocok. gitbahkan 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.
Mark Booth

@Mark booth apa tambalannya? mereka tahu perangkat lunak mereka adalah kumpulan file ini A 1.01 B 1.05 D 1.55 E 1.44 F 1.01 dan SVD untuk versi yang mereka terima memiliki info perubahan file per file mis. E diubah untuk memperbaiki cacat 1104, versi lama 1.43, versi baru 1.44 . Surga membantu kami jika kami telah mengubah F dari versi 1.01. Situasinya lebih rumit karena ada bug yang diperbaiki, mereka tidak menginginkan perubahan. Orang-orang ini menginginkan set minimal perubahan, untuk mengambil hanya beberapa fitur yang dipilih dari tahun pembangunan. Pilihan perbaikan bug post-hoc.
Tim Williscroft

3

Tidak ada keuntungan apa pun untuk versi per file.

The kerugian di sisi lain, banyak dan nyata.


0

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.


0

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.

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.