Haruskah saya memahami SVN sebelum saya melompat ke GIT? [Tutup]

31

Saya bekerja di departemen di mana tidak ada yang pernah menggunakan kontrol sumber sebelumnya, termasuk saya.

Saya mencoba mendorong konsep itu. Saya telah menghabiskan sedikit saat meneliti SVN. Saya beberapa dasar belajar. Saya dapat membuat / memperbarui / checkout / komit dengan baris perintah dan dari Tortoise. Saya mulai belajar cara memberi tag dan bercabang tetapi masih banyak bingung tentang konflik antara cabang dan batang dll. Saya masih belajar, tetapi saya tidak memiliki orang fisik yang dapat menunjukkan kepada saya apa pun. Semuanya dari buku / tutorial dan coba-coba.

Dari apa yang saya baca online sepertinya gitadalah hal yang lebih baik untuk diketahui, tetapi juga lebih rumit. Saya tidak ingin membebani diri saya sendiri. Haruskah saya terus menguasai svn sebelum pindah ke git atau akankah saya lebih bijaksana untuk hanya melompat ke git sekarang?

Apakah ada pro dan kontra untuk kedua pendekatan tersebut?

JD Isaacks
sumber
1
gitref.org adalah sumber yang bagus untuk belajar Git.
Jeremy Heiler
4
Tidak, itu akan mengaburkan pikiran Anda dan kemudian Anda akan membutuhkan "pendidikan ulang subversi". Juga git / lincah adalah teknologi yang lebih baik. Melatih rekan kerja Anda dalam subversi akan membuat lebih sulit untuk beralih ke alat terbaik nanti.
Keyo
Try Git adalah kursus pemula yang mudah dan dirancang dengan baik
Ben Brocka

Jawaban:

58

Tidak

Git sangat berbeda dari SVN, itu tidak akan membantu Anda. Jika ada, Anda akan mencari perintah "perbarui" dan "komit" dan bertanya-tanya mengapa semuanya berbeda.

Mulailah dengan Git dari Bawah ke Atas dan pergi dari sana.


Membandingkan sistem pembaruan pola komit / pembaruan terpusat standar dengan Git seperti membandingkan bus dengan angkutan massal. Sebuah bus akan membawa Anda (dan orang lain) dari titik A ke titik B menggunakan rute yang sama persis. Transit massal akan membawa Anda dari titik A ke titik B menggunakan rute apa pun yang Anda suka.

Didistribusikan itu sendiri memiliki kelemahan yang harus Anda ketahui. Dibutuhkan lebih banyak pekerjaan untuk menjaga semua orang di halaman yang sama. Ini menawarkan peningkatan fleksibilitas yang sangat besar.


Hash Revisi vs. Angka

Seseorang menyebut Git menggunakan hash SHA1 sementara Hg menggunakan angka.

Pertama, Anda jarang (jika pernah) perlu berurusan langsung dengan hash dalam komitmen / penarikan harian. Anda perlu menarik log dan menarik hash jika Anda melakukan diff atau beberapa item rebasing yang lebih rumit.

Dengan Git, setiap orang memiliki hash yang sama. Repositori yang berbeda tidak memiliki angka komit yang berbeda dan semua orang ada di halaman yang sama. Dengan Hg ini kurang begitu. Dalam praktiknya jika Anda harus menarik hash komit dan bekerja dengannya (baik untuk membandingkan atau melintasi garis waktu kode), lebih mudah untuk menyinkronkan dengan orang lain ketika Anda memiliki hash alih-alih angka.

Josh K.
sumber
3
Mungkin itu masalah AS, tetapi bukankah "angkutan massal" sama dengan "angkutan umum", yaitu bus, kereta api, dll?
Dean Harding
@Dean: Ya, mereka sama. Saya menggunakan angkutan massal karena rasanya lebih umum daripada "transportasi umum."
Josh K
Apakah saya agak bingung di sana sampai saya membaca komentar sebagai 'MassTransit' ( masstransit-project.com ) juga sebuah bus ...
FinnNk
3
Saya sedang memikirkan TIDAK besar , dan itu muncul. +1
ZJR
22

Tidak, tolong jangan repot-repot.

Serius, mulai dari DVCS. Fakta bahwa SVN populer tidak menjadikannya standar. Linus Torvalds akan memberi tahu Anda bahwa itu mungkin membusuk otak Anda .

Baca artikel / pengantar yang luar biasa ini oleh Joel Spolsky bernama Subversion Re-education .

Anda mungkin juga tertarik membaca pertanyaan lain ini: Saya seorang pecandu Subversion, mengapa saya harus mempertimbangkan atau tidak mempertimbangkan Mercurial atau Git atau DVCS lainnya?

Memilih antara DVCS

Secara pribadi, saya menggunakan keduanya lincah dan git, dan saya pikir penting untuk mengetahui keduanya. Bacaan yang disarankan tentang ini adalah Git vs Mercurial: Please Relax (lihat contoh git-addremove). Dua kutipan dari artikel itu menurut saya jumlahkan.

Mengenai git:

Filosofi desain Git tidak diragukan lagi adalah Unix: tidak seperti Subversion, CVS, atau Mercurial, git bukanlah satu biner monolitik tetapi banyak alat individu, mulai dari perintah "porselen" tingkat tinggi seperti git-pull, git-merge, dan git-checkout ke perintah "plumbing" tingkat rendah seperti git-apply, git-hash-object dan git-merge-file. Jadi, seperti MacGyver, Anda dapat melakukan apa saja yang Anda butuhkan dengan Git - ini termasuk mesin Wiki yang benar-benar mengagumkan, pelacak masalah, sistem file, alat sysadmin - semuanya kekurangan perbaikan sekering.

Tentang lincah:

Pengembang yang suka menjaga sistem mereka tetap bersih mungkin akan menghargai kenyataan bahwa hg menginstal satu biner berbeda dengan 144 yang membentuk git, dan pengembang yang berpikir bahwa kemampuan git untuk mengedit komit Anda sebelumnya adalah gila, tidak perlu, dan berbahaya akan menghargai kesederhanaan hg menyediakan dengan menghilangkan fitur tertentu.

Banyak proyek dapat ditemukan di github dan git lebih kuat, tetapi juga bisa agak menakutkan bagi pendatang baru, khususnya pengguna windows. Ada juga bitbucket (setara dengan github untuk mercurial).

Rekomendasi saya: mulai dengan lincah dan segera setelah Anda merasa nyaman dengan itu, ambil git; ini bukan tentang alat, ini tentang orang yang bekerja dengan Anda .

Apa yang saya anggap sebagai penggunaan subversion yang nyata dan praktis adalah, bukan untuk bekerja dengan orang lain, tetapi untuk mungkin menerapkan updater untuk aplikasi produksi Anda, inilah alasannya:

  • Saat ini, svn hampir diinstal di sebagian besar penyedia hosting
  • Memiliki dukungan sub-proyek yang baik (sekarang dapat dialamatkan di git dan hg). svn updan proyek Anda serta ketergantungannya diperbarui.

Mengutip Thorbjørn di utas lainnya ini :

DVCSes adalah untuk Subversion, apa Bittorrent adalah untuk ftp

Sunting : Jika ada VCS yang harus Anda ketahui sebelum Git, itu bisa jadi Mercurial (antarmuka CLI yang lebih ramah dan bagus untuk diperkenalkan dengan konsep yang didistribusikan). Saran ini berlaku khusus untuk mereka yang berasal dari Subversion karena CLI juga serupa dalam beberapa derajat. Kontrol Versi Terdistribusi dapat lebih mudah dipelajari daripada Kontrol Versi Terpusat, karena Anda hanya khawatir tentang instance repositori Anda, dan bukan bagian klien dan server secara terpisah .

dukeofgaming
sumber
1
+1 untuk tautan yang bermanfaat. Subversi cukup mudah dan cukup terdokumentasi dengan baik untuk dapat diambil sebagai keharusan begitu Anda memiliki ide-ide kontrol sumber dalam model mental Anda.
Gary Rowe
2
Menggunakan SVN sebelumnya mungkin mencemari pikiran Anda.
5
@ John Hal ini bitbucket.org
dukeofgaming
1
saya akan mengatakan alasan utama untuk menggunakan hg akan menjadi dukungan windows yang lebih baik
jk.
1
Ketika saya melihat Git surport untuk windows, saya menemukan bahwa banyak pengguna Git membenci siapa pun yang menggunakan windows, oleh karena itu kami memutuskan hg apa yang lebih cocok untuk kami.
Ian
4

Anda harus mempelajari apa yang ingin Anda gunakan. Git populer, seperti halnya Mercurial juga menikmati popularitas. Git / Mercurial adalah sistem kontrol sumber terdistribusi.

Hal yang paling penting ketika memperkenalkan konsep baru ke tim (dan sangat disayangkan bahwa kontrol versi dianggap sebagai topik baru bagi terlalu banyak tim), itu membantu untuk menguraikan tujuan dan kriteria evaluasi Anda. Anda tidak harus bersikap super formal tentang hal itu, tetapi tanyakan pada diri sendiri pertanyaan-pertanyaan berikut:

  • Apa tujuan dari kontrol versi di tim kami . Ya, semua sistem kontrol versi bernilai apa pun akan memungkinkan Anda kembali ke riwayat dan melihat apa yang telah berubah di file apa pun yang diberikan. Namun, apakah Anda akan menggunakannya untuk membuat rilis baru? (anggukan kepala Anda, Anda menginginkan ini). Ini adalah pernyataan visi 2-3 garis untuk apa yang ingin Anda capai.
  • Apakah tim Anda terbiasa memiliki lingkungan kerja lokal mereka sendiri hanya untuk menggabungkan hal-hal nanti? Jika demikian, rute DVCS mungkin paling masuk akal.
  • Sebaliknya, apakah tim Anda terbiasa bekerja dari satu drive bersama dan semuanya dalam integrasi konstan? Jika demikian, VCS yang lebih tradisional mungkin paling masuk akal.

Saat mengevaluasi alternatif Anda, Anda harus mempertimbangkan hal-hal penting yang perlu dilakukan oleh semua VCS:

  • Kode dasar (cabang yang ditandai, label, dll.). Pada dasarnya, bagaimana Anda mendapatkan kode sumber yang tepat digunakan dalam rilis proyek Anda.
  • Dapatkan perubahan lokal ke server pusat. Perlu ada salinan resmi kode - apakah Anda menggunakan DVCS atau VCS standar. Setiap alat memperlakukan proses ini secara berbeda.
  • Dapatkan perubahan di server pusat ke salinan lokal Anda.
  • Bagaimana menghadapi perubahan eksperimental. VCS memungkinkan Anda untuk lebih berani dengan perubahan yang diajukan tanpa melanggar kode sumber proyek utama. Sistem DVCS dan standar VCS melakukan pendekatan yang sangat berbeda - salah satunya akan bekerja paling baik untuk tim Anda.
  • Bagaimana Anda mengatur dan mengkonfigurasi server?
  • Apakah Anda memerlukan otentikasi? Jika demikian, bagaimana Anda memastikan hanya orang yang diizinkan untuk melakukan perubahan yang benar-benar dapat melakukannya?

Pada akhirnya, lakukan evaluasi cepat untuk menentukan apakah sistem VCS atau DVCS standar akan menjadi yang terbaik untuk tim Anda. Anda harus memilih alat yang memberikan jumlah rasa sakit paling sedikit atau kemungkinan tidak akan diadopsi. Setelah itu, evaluasi alternatif Anda yang paling sesuai dengan kebutuhan Anda.

Pada akhirnya, pelajari apa yang ingin Anda gunakan.

Berin Loritsch
sumber
3

Saya pikir banyak orang menganggap git lebih rumit daripada svn karena berbeda. Setelah menggunakan subversi (atau cvs, dll.) Untuk sementara waktu, mungkin sulit untuk secara mental beralih mode ke model DVCS. Berdasarkan hal itu, saya dapat mengatakan bahwa mungkin Anda perlu meneliti VCS tradisional seperti subversi bersama-sama dengan meneliti DVCS seperti git.

Meskipun git adalah VCS pilihan saya, saya akan mengatakan bahwa mungkin yang terbaik untuk belajar subversi juga. Untuk satu, masih ada banyak subversi dan repositori cvs di luar sana yang Anda mungkin harus berinteraksi dengan satu hari, dan juga Anda akan memiliki pemahaman yang lebih baik tentang keuntungan dan kerugian yang tepat dari DVCS dibandingkan VCS tradisional.

Cercerilla
sumber
Saya telah melihat beberapa bukti bahwa lebih mudah untuk belajar bahasa seperti Skema jika Anda belum bekerja dalam bahasa prosedural. Ini mungkin bekerja sama.
David Thornley
Jadi gunakan saja git-svn cloneuntuk berinteraksi dengan repositori.
Keyo
3

Akan tidak produktif untuk mempelajari svn dan kemudian git

Berikut ini beberapa alasan:

  • Gits secara radikal berbeda dari svn. Git's distrubted dan svn adalah client / server.
  • Makna yang berbeda melekat pada kata yang sama. Misalnya 'git checkout ...' memiliki arti berbeda dari 'svn checkout ...'
  • Bercabang berbeda. Git memiliki konsep cabang 'topik' yang merupakan cabang lokal murah yang tidak didukung oleh svn.
  • Git memiliki tempat tambahan, yang disebut indeks, yang terletak di antara pohon kerja dan repositori Anda. Svn tidak memiliki indeks. Dengan menggunakan git, perubahan Anda berpindah dari pohon kerja Anda ke indeks ke repositori.

Saran saya adalah belajar git saja.

sashang
sumber
2

Ada beberapa hal yang secara umum sama di GIT dan SVN dan beberapa tidak.

Buat / perbarui / checkout / komit

Secara umum sama, Anda harus mengambilnya dengan mudah.

cara menandai dan bercabang tetapi masih banyak bingung tentang konflik antara cabang dan trunk dll

Berbeda antara keduanya.

Tidak mengatakan Anda harus atau tidak boleh berubah sekarang (saya pikir itu panggilan Anda), hanya ingin menunjukkan itu sebagai sesuatu yang harus diperhitungkan. Jika Anda yakin ingin mencoba Git, Anda dapat memutuskan untuk beralih sekarang untuk menyelamatkan diri Anda belajar sesuatu di SVN yang berbeda di Git.

James
sumber
Juga, jangan dengarkan bashers subversi :-p Git sangat "keren" saat ini dan svn sangat tidak keren, tetapi keduanya memiliki tempat masing-masing. Menggunakan salah satu mil lebih baik daripada tidak menggunakan sesuatu yang begitu baik pada Anda untuk memperkenalkan ini. Saya telah memperkenalkan VC ke 2 perusahaan kecil, sulit tetapi sepadan.
James
+1 Info bagus terima kasih. Sepertinya jika saya akan melompat, sekarang akan menjadi saat yang tepat.
JD Isaacks
dan di mana tempat untuk subversi?
2

Wow; 12 jawaban dan semua orang masih mengajukan pertanyaan ...

Tidak, Subversi bukanlah prasyarat untuk Git.

Tidak ada pemetaan yang bersih antara Subversion dan Git - jika Anda berencana untuk belajar keduanya, Anda hanya perlu menderita karena mereka menggunakan istilah yang sama untuk tindakan yang berbeda. (Dan istilah berbeda untuk tindakan yang sama.)

  • svn commitadalah hal yang berbeda dari git commit.
  • cabang di svn dan git sangat berbeda
  • repositori svn lebih seperti remote git (tapi tidak terlalu)
  • repositori git lebih seperti copy pekerjaan svn (tapi tidak juga)

Ini adalah dua alat yang dibagi oleh bahasa umum.

Pertanyaan Anda, dan sebagian besar jawaban lain, menganggap bahwa git adalah sejenis svn ++; "Svn yang lebih baik". Bukan itu. Keduanya adalah alat yang berbeda yang bekerja di ruang yang sama, seperti mobil dan sepeda motor.

Saya menyarankan Anda memilih satu, menguasainya, dan mulai menggunakannya di tim Anda. Mempelajari kontrol versi akan sulit bagi orang yang belum pernah menggunakannya sebelumnya. VCS Anda akan menjadi bagian penting dari infrastruktur Anda, dan belajar untuk memercayainya melibatkan membangun kebiasaan kerja baru. Butuh beberapa saat.

(Either way, pastikan Anda memiliki sysadmin Anda mencadangkan repositori master - kehilangan kontrol sumber Anda akan menjadi bencana besar.)

Sean McMillan
sumber
1

Mungkin tidak - ada perbedaan yang cukup antara berbasis server dan didistribusikan sehingga Anda mungkin hanya akan membingungkan diri sendiri lebih lanjut.

Mulailah dari awal untuk mengikuti praktik yang baik dengan DVCS pilihan Anda seolah-olah dari awal dan Anda mungkin akan jauh lebih bahagia.

Pergi melihat Mercurial (jika Anda tidak ingin kewalahan).

Murph
sumber
2
Jika Anda downvote, tolong beri saya setidaknya penjelasan. Terima kasih. Dua kemungkinan: 1) Saya mungkin memperbaiki jawabannya atau 2) Saya mungkin menghapusnya ... tetapi hanya jika saya benar-benar tahu mengapa Anda berpikir ini salah
Murph
1

Git hanya sedikit lebih rumit daripada Subversion, karena ada perbedaan dalam Git antara melakukan dan mendorong ke repositori pusat.

Layak untuk belajar Git sementara Anda memiliki kesempatan untuk membuat pikiran Anda tidak hancur oleh Subversion.

David Kendal
sumber
1

Saya tidak berpikir memahami Subversion diperlukan untuk memahami Git.

Perbedaan terbesar dengan Git dan Mercurial dari Subversion, setidaknya bagi saya, adalah bahwa Anda memiliki repositori lokal yang bekerja dengan Anda, Anda masuk dan keluar dari sana sampai kode Anda berfungsi, keluar dari repo pusat, memperbaiki konflik dan periksa kembali dan dorong ke server.

indyK1ng
sumber
1

Saya sangat suka git di lingkungan Unix (Linux, MacOS X). Di windows, ini sedikit hacky. Saya akan mempertimbangkan Mercurial jika saya memiliki Windows dalam persamaan.

Saya menyukai kelas sejarah Anda, coba SCCS, RCS, CVS, Subversion dan kemudian gunakan sesuatu yang berguna seperti Git atau Mercurial.

Git dan Mercurial adalah equipotent, bonus besar dari Git adalah github . Tetapi jika Anda tidak ingin melakukan outsourcing kontrol versi Anda, github tidak lagi dalam persamaan.

shellholic
sumber
1

sistem kontrol versi berbagi kesamaan dengan bahasa pemrograman di bahwa yang pertama Anda belajar akan mengambil sebagian waktu. Setelah itu, mengambil yang baru adalah hanya masalah belajar bagaimana konsep inti yang diungkapkan oleh sistem baru.

Anda dapat mempelajari Git sekarang dan menginvestasikan waktu untuk mempelajari Suvbersion nanti jika perlu.

Sharpie
sumber
0

Nggak. Unduh Git, buat akun github, dan main-main selama beberapa hari untuk repo, dll. Git cukup sepele untuk mempercepatnya. Pelajari 5 atau 6 perintah bash dan Anda dapat melakukan semua tugas penting. Saya biasanya lebih suka "idiot-proofness" dari GUI, tetapi Bash Git semudah yang didapat. Juga, Git Gui cukup baik jika Anda lebih suka rute itu. Saya tidak benar-benar melihat manfaat yang akan Anda lihat dari belajar SVN. Saya melewati periode beberapa waktu yang lalu di mana saya mengevaluasi beberapa sistem Kontrol Versi yang berbeda untuk proyek open source baru. Saya mencoba SVN, Bazaar, Git, dan beberapa lainnya dan mempelajari dasar-dasar masing-masing. YMMV, tapi Git adalah jauh yang paling mudah. Tidak ada yang salah dengan mempelajari SVN juga, tetapi itu benar-benar tidak akan membantu Anda untuk belajar Git.

Morgan Herlocker
sumber