Saya tahu, dan menggunakan, dua sistem kontrol versi: Subversi dan git. Subversion, seperti yang sekarang, digunakan untuk proyek-proyek pribadi di mana saya satu-satunya pengembang dan git digunakan untuk proyek-proyek sumber terbuka dan proyek-proyek di mana saya percaya orang lain juga akan bekerja pada proyek tersebut. Ini sebagian besar karena kemampuan forking dan penggabungan git yang luar biasa, di mana setiap orang dapat bekerja di cabang mereka sendiri; sangat berguna.
Sekarang, saya menggunakan Subversion untuk proyek pribadi, karena saya pikir git tidak masuk akal di sana. Tampaknya sedikit berlebihan. Tidak masalah bagi saya jika itu terpusat (di server rumah saya, biasanya) ketika saya adalah satu-satunya pengembang; Saya mengambil backup secara teratur. Saya tidak perlu kemampuan untuk membuat cabang saya sendiri, cabang utama adalah cabang saya. Ya, SVN memiliki dukungan sederhana untuk percabangan, tetapi dukungan yang jauh lebih kuat untuk itu tidak masuk akal, saya pikir. Penggabungan bisa menyebalkan, atau setidaknya dari pengalaman kecil saya.
Apakah ada alasan bagus bagi saya untuk menggunakan git pada proyek-proyek pribadi, atau hanya berlebihan?
sumber
undo
ketika itu merupakan fitur yang relatif baru dalam aplikasi. Sekarang semua orang menyadari bahwa mereka membutuhkannya selama ini. Anda perlu bercabang, Anda tidak tahu itu.Jawaban:
Itu tidak berlebihan. Alasan utama mengapa saya mulai menggunakan Git dan Mercurial over Subversion untuk proyek pribadi adalah bahwa memulai repositori jauh lebih mudah.
Ingin memulai proyek baru?
BAM! Tidak perlu menyiapkan server repositori atau memeriksa struktur folder untuk mendukung percabangan dan tag ke repositori subversi.
Berbagi proyek Anda nanti hanyalah masalah:
git push
(selain memiliki repositori jarak jauh). Cobalah melakukannya dengan cepat dengan subversi!sumber
echo 'for dir in projects/*; do cd "$dir"; git push; cd ..; done' > update_all; chmod +x update_all
git init
dan bam! Oh ya dan kemudiancp ../the-other-project/.gitignore .
sebelum komit awal. Bam!Saya berpendapat bahwa menggunakan Subversion untuk proyek pribadi lokal adalah berlebihan, sedangkan Git jelas tidak. Git akan mengambil lebih sedikit ruang (karena konsep "revisi" SVN yang tidak efisien versus snapshot objek Git), memerlukan lebih sedikit pengaturan (
git init
versus selusinsvnadmin
perintah dan pengaturan izin dan sebagainya), lebih mudah untuk membuat cadangan (git clone --bare
[ataugit push origin
jika Anda menggunakan Github atau serupa] dan Anda selesai), dan memiliki alat yang lebih baik untuk mengelola kode Anda (percabangan gratis, dan menggabungkan lebih mudah dan lebih bersih). Hanya karena tidak ada orang lain yang memiliki tiruan dari repositori Anda tidak berarti bahwa manfaat dari DVCS adalah "berlebihan."Lebih jauh, saya akan mengatakan dukungan percabangan Git kurang kompleks daripada SVN, dengan hadiah yang lebih besar.
sumber
svnadmin create
, ditambah satu untuk melakukan checkout awal atau impor), tidak perlu mengatur izin dan sebagainya. Saya tidak menyangkal bahwa Git seringkali merupakan alat yang lebih baik, tetapi ketidakakuratan tentang Subversion tidak membantu.Untuk berpikir bahwa Anda tidak akan pernah melakukan percabangan kode Anda sendiri adalah pandangan pendek. Saya sudah beberapa kali melakukan percabangan kode saya sendiri, terutama ketika saya sedang bereksperimen dengan pendekatan baru yang belum sepenuhnya saya yakini. Anda akhirnya akan menginginkan fitur tersebut.
Ini berasal dari pengguna Subversion yang lama. Konsolidasi pada satu alat dapat sangat membantu membuat hidup Anda lebih mudah.
sumber
Overkill dicadangkan ketika ada kerusakan jaminan yang disebabkan oleh "solusi". Menggunakan senjata untuk membunuh lalat berarti ada kerusakan yang disebabkan oleh peluru yang pergi ke tempat lain. Itu berlebihan. Menggunakan sesuatu yang lebih kuat dari yang diperlukan yang tidak menyebabkan masalah tidak berlebihan dan bisa menjadi hal yang baik jika itu membantu Anda merampingkan proses pengembangan Anda. Itu tidak menyebabkan kerusakan dan memungkinkan Anda hanya perlu memperbarui satu set perangkat lunak, bukan dua. Jadi mengapa repot dengan dua sistem, bukan satu?
sumber
Saya menggunakan Git untuk proyek one-man saya dan saya menyukainya. Saya sebelumnya menggunakan Subversion dan saya belum melihat kelemahan menggunakan Git. Ini lebih kuat tetapi tidak dengan cara yang membuat hal-hal sederhana menjadi lebih rumit. Membuat hal-hal sederhana yang tidak perlu rumit / mahal / lambat / dll. adalah IMHO kondisi yang diperlukan untuk memanggil sesuatu yang berlebihan. Juga, di Github saya telah bercabang proyek orang sebelumnya satu orang untuk menambahkan fitur yang saya inginkan dan kemudian mengirim mereka permintaan menarik. Saya akan merasa cukup keren jika seseorang yang tertarik dengan proyek saya melakukan hal yang sama.
sumber
Saya tidak pernah menggunakan kontrol sumber pada proyek pribadi sebelum DVCS, jadi agak aneh membayangkan seseorang mengambil pandangan sebaliknya. Beberapa alasan saya adalah:
sumber
Saya telah diberitahu bahwa
git-bisect
sangat bagus untuk menemukan komit yang memperkenalkan perilaku tertentu, dengan menavigasi bolak-balik dalam komit tergantung pada input Anda.Anda akan harus melakukan beberapa hari untuk hal-hal Anda tidak tahu apa yang telah terjadi.
EDIT: Juga, kemampuan untuk bercabang sangat penting ketika Anda harus melakukan perbaikan bug di versi lama yang digunakan pelanggan. Anda harus dapat mengelola "perbaiki hal kecil ini tetapi saya tidak ingin versi terbarunya karena saya tidak ingin mengujinya lagi sekarang".
sumber
Itu tergantung pada seberapa serius Anda ingin mendapatkan versi kode Anda sendiri. Jika yang Anda bangun misalnya perpustakaan sederhana yang hanya akan memiliki versi saat ini (atau selama itu benar), saya pribadi hanya akan menggunakan opsi cadangan dasar seperti Dropbox. Jika Anda kehilangan semua kode, Anda dapat memulihkannya dari web, dan Dropbox memiliki cadangan versi 30 hari jika Anda benar-benar melakukan sesuatu yang bodoh.
Namun jika Anda misalnya perlu mempertahankan cabang-cabang Production dan Dev, maka git benar-benar alat yang hebat - dan cara yang jauh lebih cepat daripada svn. Pikirkan risiko kegagalan hard drive jika Anda hanya menyimpan data secara lokal.
sumber
Saya selalu, selalu, selalu menggunakan sistem kontrol versi untuk segala jenis proyek pengembangan. Besar, atau kecil benar-benar tidak masalah. Apakah saya bermain di rumah dengan semacam teknologi baru, menulis sedikit pembantu untuk memudahkan hidup saya atau berkembang secara profesional dalam tim yang besar dan terdistribusi - saya selalu ingin sistem kontrol versi mendukung saya.
Tentu, sebagian besar waktu untuk proyek pribadi kecil Anda tidak akan menggunakan sebagian besar fitur, tetapi menyiapkan repositori git (atau bahkan repositori Subversion lokal) bukan masalah besar, jadi lakukanlah! Dan sebelum Anda menyadarinya, Anda pasti ingin tahu "sial, apa isi file X Jumat lalu?". Tanpa kontrol versi - semoga berhasil ;-)
Jadi, itu benar-benar tidak masalah jika Anda menggunakan git atau SVN - secara pribadi saya mulai bermigrasi semakin banyak barang dari SVN ke git tetapi yang utama adalah menggunakan kontrol versi sama sekali - bahkan untuk hal-hal kecil.
sumber
Hanya karena tidak ada yang menyebutkannya: untuk proyek pribadi, darcs benar-benar bagus, dan kurang terlibat daripada git untuk melakukan kontrol versi secara langsung. Ini tidak secepat untuk proyek yang lebih besar, tetapi kemudian, Subversion juga tidak!
sumber
Ini bisa menjadi perubahan paradigma mental yang kuat untuk memahami bahwa apa yang kita lakukan adalah eksperimen. Memiliki alat yang murah / mudah untuk mendukung ini, meningkatkan kemampuan Anda untuk bergerak maju, sebagian karena hal itu meningkatkan kemampuan Anda untuk mundur dari eksperimen apa pun ketika hasilnya buruk.
Banyak pengembang berkata, Yah saya hanya membuat salinan kode saya. Tetapi salinan ini menjadi sulit untuk dikelola dan berakhir sebagai kekacauan. Anda memiliki banyak salinan dan tidak dapat mengingat salinan mana untuk apa, dan kemudian mencoba mencari tahu kapan aman untuk menghapusnya.
Semua ini menjadi lebih berharga ketika percobaan memerlukan perubahan terkoordinasi di beberapa file. Dan ketika itu adalah proyek solo menggunakan Git menjadi lebih sederhana.
Alih-alih bertanya-tanya apakah saya harus menggunakannya pada proyek solo, saya sekarang berpikir betapa memalukannya saya belum menemukan ini lebih cepat.
sumber