Menggunakan Subversion sebagai repositori artefak vs alat manajemen artefak tertentu

19

TL; DR: Mengapa menggunakan sesuatu seperti Apache Archiva atau Sonatype Nexus sebagai repositori artifak alih-alih Subversion?

Sistem build yang saya gunakan saat ini memiliki banyak gumpalan biner (gambar, file suara, kompilasi binari, dll), baik sebagai input dan output untuk build kami. Sistem kami untuk mengelola ini sangat ad hoc; beberapa diperiksa ke repositori Subversion kami di samping kode kami, beberapa disimpan di tempat lain di luar kontrol versi formal.

Saya melihat konsolidasi ini, jadi kami memiliki sesuatu yang lebih konsisten dan mudah digunakan, dan yang memisahkan artefak biner dari kode.

Google memberi tahu saya bahwa ada beberapa pilihan repositori artefak yang tersedia ( Archiva , Nexus , Artifactory , ...), tetapi dari membaca di sekitar, saya tidak dapat melihat keuntungan menggunakan ini melalui Subversion. Itu akan menjaga binari untuk kita - sudah melakukan itu untuk beberapa binari kita, kita hanya ingin mengatur ulang tata letak repositori untuk memisahkannya dari kode - dan memiliki keuntungan penting bahwa kita sudah memiliki server dan keahlian Subversion.

Begitu. Apa keuntungan menggunakan sistem manajemen artefak khusus daripada menggunakan alat kontrol versi umum seperti Subversion?

saya dan
sumber
Sejauh ini, keuntungan terbesar menggunakan alat khusus adalah bahwa alat lain tahu cara menanganinya ! Mereka dapat menempatkan artefak ke dalam alat-alat itu dan mereka dapat membawanya kembali secara otomatis.
Joachim Sauer

Jawaban:

13

Jawaban singkat: Secara umum, Anda tidak perlu riwayat artefak biner dan perubahan artefak itu, Anda hanya perlu versi tertentu.

Jawaban yang lebih panjang: Setiap kali Anda melakukan perubahan kecil ke file biner, sistem kontrol versi tidak memiliki cara untuk membuat delta - perbedaan antara dua file - sehingga membuat salinan baru.

Dalam CVCS, seperti SVN, itu bukan masalah besar, karena Anda hanya memiliki satu salinan pusat dari repositori Anda - salinan lokal Anda hanya satu versi. (Meskipun, meskipun begitu, repositori Anda dapat menjadi sangat besar, membuat checkin lebih lambat.) Tetapi apa yang terjadi jika Anda kemudian beralih ke DVCS, di mana setiap salinan repositori memiliki riwayat lengkap setiap file? Ukuran perubahan menjadi sangat relevan di sana.

Dan apa yang memberi Anda imbalan atas rasa sakit? Satu-satunya hal yang ditawarkannya adalah dapat kembali ke versi repositori Anda sebelumnya dan tahu bahwa Anda memiliki binari yang benar untuk versi itu.

Tetapi apakah Anda memerlukan seluruh biner di repositori Anda untuk melakukan itu? Atau bisakah Anda pergi hanya dengan memiliki file teks, memberi tahu proses pembuatan versi mana untuk menarik dari repositori lain di tempat lain?

Yang terakhir adalah apa yang ditawarkan oleh repositori artefak pada umumnya.

Selain itu, beberapa yang lebih profesional, seperti Nexus, juga akan memberi Anda informasi tentang lisensi untuk artefak pihak ketiga, sehingga Anda tidak mengambil risiko bertabrakan dengan beberapa klausa halus dalam apa yang Anda yakini sebagai perpustakaan FOSS.

pdr
sumber
Oke, saya harus menghindari menggunakan repositori Subversion saya saat ini sebagai repositori artefak, tetapi mengapa tidak menyiapkan repositori Subversion baru? Yang tampaknya memiliki semua kelebihan dan kekurangan yang sama; repositori artefak mungkin akan memiliki masalah yang sama tentang menyimpan data biner yang besar.
me_and
@me_and: Anda bisa melakukannya. Tetapi kemudian Anda harus mengelola revisi mana yang menyediakan versi artefak mana. Mengapa memberi diri Anda pekerjaan ekstra ketika repositori artefak melakukannya untuk Anda? Itu seperti mengatakan, "Jadi saya bisa menggunakan Notepad untuk menulis kode saya? Kalau begitu, mengapa repot-repot dengan Eclipse?" Selain itu, Anda tidak akan pernah dapat menghapus versi lama untuk menghemat ruang. Anda dapat dengan repositori artefak.
pdr
1
Untuk menekankan dan memperluas jawaban dengan @pdr, jika Anda menggunakan svn sebagai repositori artefak biner, Anda kemungkinan akan mengalami masalah penyimpanan karena svn dirancang untuk tidak pernah menghapus data. Di satu tempat saya bekerja, kami menggunakan svn untuk penyimpanan artefak, dan kami secara teratur melebihi batas penyimpanan karena sulit (bukan tidak mungkin, tetapi rumit) untuk mengeluarkan artefak lama yang tidak digunakan dari toko. Alat repositori biner asli seperti Artifactory dan Nexus memungkinkan penghapusan artefak yang tidak dibutuhkan.
Matthew Skelton
3
Koreksi: Subversi menggunakan delta biner secara internal (dan hanya AFAIK yang). Saya melakukan percobaan bertahun-tahun yang lalu dengan menyimpan file MS Office dan itu sangat efektif. Ukuran repositori tumbuh dengan sangat lambat, bahkan ketika sangat mengocok 200 slide PowerPoint. Tetapi efektivitas algoritma biner delta akan sangat bervariasi berdasarkan jenis file dan saya pikir kurangnya kebijakan retensi adalah masalah nyata di sini (sesuatu yang dapat Anda kerjakan dengan dump / load yang difilter, tetapi kemudian Anda mulai menulis solusi Anda sendiri).
Peter Becker
"sistem kontrol versi tidak memiliki cara untuk membuat delta" - masalahnya adalah mereka melakukan hal itu - sejak 2006 ... subversion.apache.org/docs/release-notes/1.4.html#svndiff1 en.wikipedia. org / wiki / Xdelta
RnR
1

Kami menggunakan SVN sebagai repositori untuk rilis build dan ini sangat baik. Kami memiliki satu repositori rilis yang lebih baik dari 30 GB dari berbagai rilis build dan berkinerja menarik build out untuk digunakan.

beberapa keuntungan dari melakukan ini adalah ..

  • Biner yang ditambahkan ke SVN dikompres hampir 60-70 persen pada ruang hemat rata-rata.
  • SVN berfungsi sebagai perpustakaan (artifactory) untuk rilis dan repositori didukung untuk keperluan Pemulihan Bencana.
  • SVN via https memungkinkan pengiriman kode rilis yang aman ke dalam DMZ.
Lance Lyons
sumber