Haruskah saya menggunakan SVN atau Git? [Tutup]

321

Saya memulai proyek terdistribusi baru. Haruskah saya menggunakan SVN atau Git, dan mengapa?

rudigrobler
sumber
5
Ya, git bekerja di Mac. Jika Anda menggunakan macports untuk menginstalnya, itu bahkan akan menginstal ujung depan mac ke antarmuka komit dan jelajahi.
Seth Johnson
3
kemungkinan duplikat dari stackoverflow.com/questions/871/…
3
@Andre - karena Anda dapat menggunakan MonoDevelop - Saya beralih dari Vault ke SVN sehingga saya dapat mengembangkan perangkat lunak .NET di mac atau pc saya. Tidak ada klien untuk Vault tetapi ada untuk SVN :-)
schmoopy
4
Github / bitbucket + sourcetree = surga! - sourcetreeapp.com
thecodeassassin

Jawaban:

253

SVN adalah satu repo dan banyak klien. Git adalah repo dengan banyak repo klien, masing-masing dengan pengguna. Ini terdesentralisasi ke titik di mana orang dapat melacak pengeditan mereka sendiri secara lokal tanpa harus mendorong sesuatu ke server eksternal.

SVN dirancang untuk menjadi lebih sentral di mana Git didasarkan pada setiap pengguna yang memiliki repo Git sendiri dan repo-repo itu mendorong perubahan kembali menjadi sentral. Untuk alasan itu, Git memberi individu kontrol versi lokal yang lebih baik.

Sementara itu Anda memiliki pilihan antara TortoiseGit , GitExtensions (dan jika Anda meng-host repositori git "central" di github, klien mereka sendiri - GitHub untuk Windows ).

Jika Anda ingin keluar dari SVN, Anda mungkin ingin mengevaluasi Bazaar sebentar. Ini adalah salah satu generasi berikutnya dari sistem kontrol versi yang memiliki elemen terdistribusi ini. Itu tidak tergantung POSIX seperti git sehingga ada build Windows asli dan memiliki beberapa merek open source yang kuat mendukungnya.

Tetapi Anda bahkan mungkin belum membutuhkan fitur-fitur ini. Lihatlah fitur, kelebihan dan kekurangan VCSes yang didistribusikan . Jika Anda membutuhkan lebih dari penawaran SVN, pertimbangkan satu. Jika tidak, Anda mungkin ingin tetap dengan integrasi desktop superior SVN (saat ini).

Oli
sumber
24
Mungkin juga melihat Hg (Merkurius)
Joel
24
Semuanya menjadi jauh lebih baik sejak Oktober 2008. Anda dapat menginstal TortoiseGit, ambil versi portabel MSysGit terbaru, dan beri tahu TortoiseGit di mana menemukannya. Saya baru saja memindahkan repo svn besar saya ke git hari ini karena dukungan penggantian nama svn yang buruk akhirnya membuat saya cukup marah.
Kita Semua Monica
4
Bergerak selama 2 tahun kami sekarang memiliki beberapa alat windows yang bagus. Saat ini saya menggunakan netbeans dengan MSysGit. Saya juga beruntung dengan TortoiseGit. Saya pikir itu cukup baik untuk digunakan dalam produksi. Mempertimbangkan betapa sulitnya mengelola konflik sederhana dalam subversi git adalah perbaikan besar.
Keyo
24
Kami banyak menggunakan Git di Windows dan sudah lama memilikinya. Git benar-benar fantastis di Windows.
Charlie Flowers
13
@Oli Akan bagus untuk memperbarui jawaban Anda (terutama tentang klien Windows git) berdasarkan komentar di sini dan pengalaman Anda. Jawaban saat ini tampaknya berat sebelah sekarang 2-3 tahun telah berlalu sejak ditulis.
amit
111

Saya tidak pernah mengerti konsep "git tidak bagus di Windows"; Saya mengembangkan secara eksklusif di bawah Windows dan saya tidak pernah punya masalah dengan git.

Saya pasti akan merekomendasikan git atas subversi; itu hanya jauh lebih fleksibel dan memungkinkan "pengembangan offline" dengan cara yang tidak pernah benar-benar subversi. Ini tersedia di hampir setiap platform yang bisa dibayangkan dan memiliki lebih banyak fitur daripada yang mungkin pernah Anda gunakan.

Shikari Gelap
sumber
9
Saya, di sisi lain, memiliki beberapa masalah dengan git di windows, itu melakukan hal-hal aneh pada repo saya. Dan saya menggunakan versi terbaru di cygwin (kira-kira sebulan yang lalu).
Roman Plášil
7
@ Roman: well, port Cygwin hampir tidak sama dengan port win32 asli. Saya berharap port Cygwin jauh kurang teruji ...
SamB
49
"lebih banyak fitur daripada yang mungkin pernah Anda gunakan" adalah bendera merah di buku saya
BT
26
@ BT "bendera merah" Saya tidak setuju. Saya sering mendapati diri saya berharap ada cara untuk melakukan sesuatu dan setelah sedikit mencari saya menemukan ada beberapa perintah yang saya tidak tahu tentang itu lakukan saja. Saya menggunakan GIT di mesin windows saya juga dan belum memiliki masalah besar.
testing123
@ testing123 tetapi mereka bukan fitur "Anda mungkin akan [n] pernah menggunakan" karena Anda benar-benar akhirnya menggunakannya.
mulllhausen
77

Berikut adalah salinan jawaban yang saya buat dari beberapa pertanyaan duplikat sejak itu dihapus tentang Git vs SVN (September 2009).

Lebih baik? Selain dari tautan biasa WhyGitIsBetterThanX , mereka berbeda:

satu adalah VCS Pusat berdasarkan salinan murah untuk cabang dan tag yang lain (Git) adalah VCS yang didistribusikan berdasarkan grafik revisi. Lihat juga Konsep inti VCS .


Bagian pertama itu menghasilkan beberapa komentar yang salah informasi dengan berpura-pura bahwa tujuan dasar kedua program (SVN dan Git) adalah sama, tetapi mereka telah diimplementasikan dengan sangat berbeda.
Untuk mengklarifikasi perbedaan mendasar antara SVN dan Git , izinkan saya ulangi:

  • SVN adalah implementasi ketiga dari kontrol revisi : RCS, lalu CVS dan akhirnya SVN mengelola direktori data berversi. SVN menawarkan fitur VCS (pelabelan dan penggabungan), tetapi tag-nya hanyalah salinan direktori (seperti cabang, kecuali Anda tidak "seharusnya" menyentuh apa pun di direktori tag), dan penggabungannya masih rumit, saat ini didasarkan pada meta -data ditambahkan untuk mengingat apa yang telah digabungkan.

  • Git adalah manajemen konten file (alat yang dibuat untuk menggabungkan file), berevolusi menjadi Sistem Kontrol Versi yang benar , berdasarkan pada DAG ( Grafik Acyclic yang Diarahkan ) dari komitmen, di mana cabang-cabang adalah bagian dari sejarah data (dan bukan data itu sendiri ), dan di mana tag adalah meta-data sejati.

Mengatakan mereka tidak "berbeda secara fundamental" karena Anda dapat mencapai hal yang sama, menyelesaikan masalah yang sama, adalah ... jelas salah pada banyak tingkatan.

  • jika Anda memiliki banyak penggabungan yang rumit, melakukannya dengan SVN akan lebih lama dan lebih rentan kesalahan. jika Anda harus membuat banyak cabang, Anda perlu mengelolanya dan menggabungkannya, sekali lagi jauh lebih mudah dengan Git daripada dengan SVN, terutama jika sejumlah besar file terlibat (kecepatan kemudian menjadi penting)
  • jika Anda memiliki penggabungan parsial untuk pekerjaan yang sedang berjalan, Anda akan mengambil keuntungan dari area pementasan Git (indeks) untuk melakukan hanya apa yang Anda butuhkan, menyimpan sisanya, dan melanjutkan cabang lainnya.
  • jika Anda membutuhkan pengembangan offline ... baik dengan Git Anda selalu "online", dengan repositori lokal Anda sendiri, apa pun alur kerja yang ingin Anda ikuti dengan repositori lain.

Tetap saja komentar pada jawaban lama (yang dihapus) itu bersikeras:

VonC: Anda mengacaukan perbedaan mendasar dalam implementasi (perbedaannya sangat mendasar, kami berdua dengan jelas menyetujui hal ini) dengan perbedaan tujuan.
Keduanya adalah alat yang digunakan untuk tujuan yang sama: inilah mengapa banyak tim yang sebelumnya menggunakan SVN cukup berhasil membuangnya demi Git.
Jika mereka tidak memecahkan masalah yang sama, substitusi ini tidak akan ada.

, yang saya jawab:

"substitusi" ... istilah menarik ( digunakan dalam pemrograman komputer ).
Tentu saja, Git bukan subtipe dari SVN.

Anda dapat mencapai fitur teknis yang sama (tag, cabang, menggabungkan) dengan keduanya, tetapi Git tidak menghalangi Anda dan memungkinkan Anda untuk fokus pada konten file , tanpa memikirkan alat itu sendiri.

Anda tentu tidak dapat (selalu) hanya mengganti SVN dengan Git "tanpa mengubah sifat yang diinginkan dari program itu (kebenaran, tugas yang dilakukan, ...)" (yang merupakan referensi untuk definisi penggantian yang disebutkan di atas ):

  • Salah satunya adalah alat revisi yang diperluas, yang lain merupakan sistem kontrol versi yang benar.
  • Satu cocok untuk proyek monolitik kecil hingga sedang dengan alur kerja menggabungkan sederhana dan (tidak terlalu banyak) versi paralel. SVN sudah cukup untuk tujuan itu, dan Anda mungkin tidak memerlukan semua fitur Git.
  • Yang lain memungkinkan untuk proyek-proyek menengah ke besar berdasarkan beberapa komponen ( satu repo per komponen ), dengan sejumlah besar file untuk menggabungkan antara beberapa cabang dalam alur kerja gabungan yang kompleks, versi paralel di cabang, gabungan retrofit, dan sebagainya. Anda bisa melakukannya dengan SVN, tetapi Anda jauh lebih baik dengan Git.
    SVN tidak bisa mengelola proyek apa pun dengan ukuran apa pun dengan alur kerja gabungan. Git bisa.

Sekali lagi, sifat mereka secara fundamental berbeda (yang kemudian mengarah pada implementasi yang berbeda tetapi bukan itu intinya).
Satu melihat kontrol revisi sebagai direktori dan file, yang lain hanya melihat konten file (begitu banyak sehingga direktori kosong bahkan tidak akan mendaftar di Git!).

Tujuan akhir umum mungkin sama, tetapi Anda tidak dapat menggunakannya dengan cara yang sama, Anda juga tidak dapat menyelesaikan kelas masalah yang sama (dalam cakupan atau kompleksitas).

VONC
sumber
10
Saya tidak setuju dengan Anda bahwa git dan svn pada dasarnya berbeda, tetapi saya tidak setuju pada banyak poin Anda. svn mungkin telah ditulis untuk menggantikan cvs, tetapi mereka sama sekali tidak berhubungan sebaliknya, sementara cvs dimulai sebagai skrip di atas RCS sehingga ada hubungan langsung. Namun, orang yang Anda kutip sepenuhnya benar, mereka berdua secara mendasar mengelola revisi file, implementasi dan proses yang terjadi (atau bagaimana melakukannya) adalah detail implementasi. Ini seperti perbedaan antara CRC dan SHA1, yang pada dasarnya sangat berbeda tetapi mereka melakukan hal yang sama.
Erik Funkenbusch
37

2 keunggulan utama SVN yang jarang dikutip:

  1. Dukungan file besar. Selain kode, saya menggunakan SVN untuk mengelola direktori home saya. SVN adalah satu-satunya VCS (didistribusikan atau tidak) yang tidak tercekik pada file TrueCrypt saya (tolong perbaiki saya jika ada VCS lain yang menangani file 500MB + secara efektif). Ini karena perbandingan diff dialirkan (ini adalah poin yang sangat penting). Rsync tidak dapat diterima karena ini bukan 2 arah.

  2. Checkout / checkin sebagian repositori (subdir). Mercurial dan bzr tidak mendukung ini, dan dukungan git terbatas. Ini buruk di lingkungan tim, tetapi sangat berharga jika saya ingin memeriksa sesuatu di komputer lain dari dir home saya.

Hanya pengalaman saya saja.

pengguna154489
sumber
6
"tolong perbaiki saya jika ada VCS lain yang menangani file 500MB + secara efektif" - Tentu saja!
james creasy
8
Perforce = tidak gratis. Selain itu, Perforce tidak tersedia untuk semua platform.
WhyNotHugo
4
Mengapa tidak meletakkan repo SVN DI DALAM wadah truecrypt? Anda juga bisa melakukan tunnel ssh, dan mengkonfigurasi server untuk menyimpan repo tertentu di dalam file truecrypt lain. Ini memiliki keuntungan tambahan yang bisa Anda lakukan sebagian checkout dari repo itu.
WhyNotHugo
1
@Hugo sejauh yang saya tahu, klien Perforce tersedia untuk Windows, Unix, varian Linux, Mac, Amiga, BeOS, Cygwin, HPUX, IBM AS / 400, OS / 2, DEC VMS, dan Novell File Server. Apakah ada beberapa platform relevan yang hilang dari daftar?
eis
1
Ya, OpenBSD (dan saya tahu ini dari pengalaman, tidak perlu google ini). Saya kira itu tidak akan berfungsi pada maemo juga, meskipun saya mungkin salah (dan ya, saya menggunakan git pada maemo).
WhyNotHugo
25

Setelah melakukan penelitian lebih lanjut, dan meninjau tautan ini: https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.html

(Beberapa ekstrak di bawah):

  • Ini sangat cepat. Tidak ada SCM lain yang telah saya gunakan yang mampu mengikutinya, dan saya telah menggunakan banyak hal, termasuk Subversion, Perforce, darcs, BitKeeper, ClearCase dan CVS.
  • Ini sepenuhnya didistribusikan. Pemilik repositori tidak dapat menentukan cara saya bekerja. Saya dapat membuat cabang dan melakukan perubahan saat terputus di laptop saya, kemudian menyinkronkannya dengan sejumlah repositori lainnya.
  • Sinkronisasi dapat terjadi pada banyak media. Saluran SSH, melalui HTTP melalui WebDAV, melalui FTP, atau dengan mengirim email berisi tambalan untuk diterapkan oleh penerima pesan. Repositori pusat tidak diperlukan, tetapi dapat digunakan.
  • Cabang bahkan lebih murah daripada di Subversion. Membuat cabang adalah sesederhana menulis file 41 byte ke disk. Menghapus cabang sama mudahnya dengan menghapus file itu.
  • Tidak seperti cabang Subversion membawa sejarah lengkap mereka. tanpa harus melakukan salinan aneh dan berjalan melalui salinan. Saat menggunakan Subversion, saya selalu merasa canggung untuk melihat riwayat file pada cabang yang terjadi sebelum cabang dibuat. from #git: spearce: Saya tidak mengerti satu hal tentang SVN di halaman. Saya membuat cabang di SVN dan menelusuri riwayat menunjukkan seluruh sejarah file di cabang
  • Penggabungan cabang lebih sederhana dan lebih otomatis di Git. Di Subversion Anda perlu mengingat apa revisi terakhir yang Anda gabungkan sehingga Anda dapat menghasilkan perintah gabungan yang benar. Git melakukan ini secara otomatis, dan selalu melakukannya dengan benar. Yang berarti ada sedikit peluang untuk melakukan kesalahan ketika menggabungkan dua cabang bersama.
  • Penggabungan cabang dicatat sebagai bagian dari sejarah repositori yang tepat. Jika saya menggabungkan dua cabang bersama-sama, atau jika saya menggabungkan cabang kembali ke bagasi asalnya, operasi gabungan dicatat sebagai bagian dari sejarah repostory yang telah dilakukan oleh saya, dan kapan. Sulit untuk membantah siapa yang melakukan penggabungan saat itu ada di log.
  • Membuat repositori adalah operasi sepele: mkdir foo; cd foo; git init Itu dia. Yang berarti saya membuat repositori Git untuk semuanya hari ini. Saya cenderung menggunakan satu repositori per kelas. Sebagian besar repositori tersebut di bawah 1 MB dalam disk karena mereka hanya menyimpan catatan kuliah, tugas pekerjaan rumah, dan jawaban LaTeX saya.
  • Format file internal repositori sangat sederhana. Ini berarti perbaikan sangat mudah dilakukan, tetapi bahkan lebih baik karena sangat sederhana sangat sulit untuk rusak. Saya tidak berpikir ada orang yang pernah memiliki repositori Git yang rusak. Saya telah melihat Subversion dengan fsfs korup sendiri. Dan saya telah melihat Berkley DB merusak dirinya sendiri terlalu banyak untuk mempercayai kode saya ke backend bdb dari Subversion.
  • Format file Git sangat bagus dalam mengompresi data, meskipun formatnya sangat sederhana. Repositori proyek Mozilla sekitar 3 GB; sekitar 12 GB dalam format fsfs Subversion. Di Git sekitar 300 MB.

Setelah membaca semua ini, saya yakin bahwa Git adalah jalan yang harus ditempuh (walaupun ada sedikit kurva pembelajaran). Saya telah menggunakan Git dan SVN pada platform Windows juga.

Saya ingin mendengar apa yang orang lain katakan setelah membaca di atas?

Waqar
sumber
15
Git sangat cepat pada beberapa operasi, terutama karena operasi hanya mempengaruhi repositori lokal Anda. Misalnya, checkin Git tidak boleh secara adil dibandingkan dengan checkin SVN, karena checkin SVN juga merupakan dorongan perubahan ke repositori pementasan untuk seluruh tim Anda. Itu membutuhkan jaringan, dan membandingkan Git's no network yang berkomitmen dengan transfer jaringan bernada perbandingan yang tidak pantas. Jika Anda komit, dan kemudian kehilangan hard drive, dengan Git Anda kehilangan uang kembalian Anda. Tidak apa-apa jika itu yang Anda harapkan, tapi itu tidak diharapkan dalam SCM yang tidak didistribusikan.
Edwin Buck
1
@ EdwinBuck Tidak memperhitungkan apa yang dilakukan Waqar, dalam ujian bahkan dengan waktu jaringan yang diperhitungkan git cenderung lebih cepat: git-scm.com/about/small-and-fast
Sqeaky
Anda "Membuat repositori adalah operasi sepele" titik extremly penting, terutama pada Windows: dibandingkan dengan SVN, itu jauh lebih mudah untuk cepat mensimulasikan sekelompok repo didistribusikan saling berhubungan, semua conected ke pusat (--bare) repo dengan Git dari itu adalah untuk melakukan analog dengan SVN (instal aplikasi server Windows SVN, dll). Juga (aneh) saya menemukan Git lebih konsisten di seluruh OS: baris perintah dirancang dengan sangat baik dan dengan demikian cukup sebagian besar waktu (dan hampir identik antara OS) vs berbagai aplikasi klien / server asli SVN ...
Shivan Dragon
1
Artikel wiki yang Anda rujuk penuh dengan kesalahan. Karena itu, jawaban Anda salah. Diturunkan. Ada halaman pembicaraan di wiki yang merujuk ke svnvsgit.com yang mengatakan mengapa perbandingannya salah.
bahrep
Sangat cepat? Saya sudah memindahkan proyek ciforth dari cvs lokal ke github. Ini adalah proyek sederhana tetapi memiliki satu file sumber utama besar 10.000 baris. Jika saya mencoba menggunakan menyalahkan pada file ini github jatuh dalam waktu habis. Sebagian besar jika seseorang tidak puas dengan mengatakan cepat, dan bersikeras menggunakan kualifikasi seperti itu itu bukan pendapat yang seimbang, membuat saya curiga dengan semua yang Anda katakan. Groetjes Albert
Albert van der Horst
12

Saya akan mengatur repositori Subversion. Dengan melakukannya dengan cara ini, setiap pengembang dapat memilih apakah akan menggunakan klien Subversion atau klien Git (with git-svn). Menggunakan git-svntidak memberi Anda semua manfaat dari solusi Git penuh, tetapi itu memberikan pengembang individu banyak kontrol atas alur kerja mereka sendiri.

Saya percaya ini akan menjadi waktu yang relatif singkat sebelum Git bekerja dengan baik pada Windows seperti halnya pada Unix dan Mac OS X (sejak Anda bertanya).

Subversion memiliki alat yang luar biasa untuk Windows, seperti TortoiseSVN untuk integrasi Explorer dan AnkhSVN untuk integrasi Visual Studio.

Greg Hewgill
sumber
11

Lucunya, saya meng-host proyek di Subversion Repos, tetapi mengaksesnya melalui perintah Git Clone.

Silakan baca Pengembangan dengan Git di Proyek Google Code

Meskipun Google Code secara alami berbicara Subversion, Anda dapat dengan mudah menggunakan Git selama pengembangan. Mencari "git svn" menunjukkan praktik ini tersebar luas, dan kami juga mendorong Anda untuk bereksperimen dengannya.

Menggunakan Git di Repositori Svn memberi saya manfaat:

  1. Saya dapat bekerja didistribusikan pada beberapa mesin, melakukan dan menarik dari dan ke mereka
  2. Saya memiliki repositori svn pusat backup/public untuk diperiksa orang lain
  3. Dan mereka bebas menggunakan Git untuk mereka sendiri
Andre Bossard
sumber
3
Sekadar catatan: Pada Juli 2011, Google Code mendukung Git secara asli.
Jeremy Salwen
9

Tidak benar-benar menjawab pertanyaan Anda, tetapi jika Anda ingin manfaat dari Kontrol Revisi Terdistribusi - sepertinya Anda lakukan - dan Anda menggunakan Windows, saya pikir Anda akan lebih baik menggunakan Mercurial daripada Git karena Mercurial memiliki dukungan Windows yang jauh lebih baik. Mercurial memang memiliki port Mac juga.

Dave Webb
sumber
9

Jika tim Anda sudah terbiasa dengan perangkat lunak versi dan sumber kontrol seperti cvs atau svn, maka, untuk proyek sederhana dan kecil (seperti yang Anda klaim), saya sarankan Anda tetap menggunakan SVN. Saya benar-benar nyaman dengan svn, tetapi untuk proyek e-commerce saat ini yang saya lakukan pada Django, saya memutuskan untuk bekerja pada git (saya menggunakan git dalam svn-mode, yaitu, dengan repo terpusat yang saya dorong dan tarik dari untuk berkolaborasi dengan setidaknya satu pengembang lain). Pengembang lain merasa nyaman dengan SVN, dan sementara pengalaman orang lain mungkin berbeda, kami berdua memiliki waktu yang sangat buruk merangkul git untuk proyek kecil ini. (Kami berdua pengguna Linux hardcore, jika itu penting sama sekali.)

Jarak tempuh Anda mungkin berbeda, tentu saja.

ayaz
sumber
8

Jelas svn, karena Windows — paling-paling — adalah warga negara kelas dua di dunia git(lihat http://en.wikipedia.org/wiki/Git_(software)#Kemampuan untuk lebih jelasnya).

UPDATE: Maaf untuk tautan yang rusak, tapi saya sudah berhenti berusaha agar SO bekerja dengan URI yang mengandung tanda kurung. [tautan diperbaiki sekarang. -ed]

Hank Gay
sumber
1
FYI: lampirkan URL dalam kurung sudut, atau ganti tanda kurung dengan% 28 dan% 29.
PhiLho
1
Apakah penyandian URL berfungsi untuk sintaks [] ()?
Hank Gay
16
Ini FUD salah. Git fantastis di Windows. Dan SVN sangat buruk di mana-mana.
Charlie Flowers
6
Untuk semua downvoting saya, silakan kembali dan melihat komentar pengembang dari sekitar tahun 2008: cukup jelas bahwa Linus dan geng tidak peduli tentang mendukung Windows. Tidak apa-apa: Saya juga tidak benar-benar ingin melakukannya, dan perangkat lunak saya hampir tidak serumit VCS yang mengharapkan perilaku POSIXish dari sistem file. Namun, tampaknya tidak adil untuk menggambarkan pernyataan saya sebagai FUD jika Anda melihat konteksnya.
Hank Gay
2
Mungkin pada 2008 git buruk pada Windows, tapi saya sudah menggunakan msysgit sejak 2009 dan bekerja dengan sempurna. Itu termasuk gitk, desktop offline yang setara dengan GitHub.
Dan Dascalescu
8

Poin utamanya adalah, bahwa Git adalah VCS yang didistribusikan dan Subversion yang terpusat. VCS yang didistribusikan sedikit lebih sulit untuk dipahami, tetapi memiliki banyak keuntungan. Jika Anda tidak membutuhkan kelebihan ini, Subversion mungkin pilihan yang lebih baik.

Pertanyaan lain adalah dukungan alat. VCS mana yang lebih baik didukung oleh alat yang Anda rencanakan untuk digunakan?

EDIT: Tiga tahun lalu saya menjawab seperti ini:

Dan Git bekerja pada Windows saat ini hanya melalui Cygwin atau MSYS . Subversi mendukung Windows sejak awal. Karena solusi git untuk windows dapat bekerja untuk Anda, mungkin ada masalah, karena sebagian besar pengembang Git bekerja dengan Linux dan tidak memiliki portabilitas di pikiran sejak awal. Saat ini saya lebih suka Subversion untuk pengembangan di Windows. Dalam beberapa tahun ini mungkin tidak relevan.

Sekarang dunia telah sedikit berubah. Git memiliki implementasi yang baik di windows sekarang. Meskipun saya diuji tidak melalui windows (karena saya tidak lagi menggunakan sistem ini), saya cukup yakin, bahwa semua VCS utama (SVN, Git, Mercurial, Bazaar) memiliki implementasi Windows yang tepat sekarang. Keuntungan untuk SVN ini hilang. Poin lainnya (Terpusat vs. Terdistribusi dan cek untuk dukungan alat) tetap valid.

Mnementh
sumber
Saya optimis bahwa cakrawala tidak relevan akan jauh lebih pendek daripada beberapa tahun.
Greg Hewgill
Ya, mungkin hanya satu tahun. Git memiliki komunitas pengembangan yang dinamis. Tetapi subversi juga demikian. Dalam satu atau dua tahun Anda harus melihat keduanya lagi untuk menjawab pertanyaan ini.
Mnementh
1
Sekarang satu atau dua tahun kemudian. Bagaimana kelihatannya? :)
Merlyn Morgan-Graham
3
Git tidak memiliki ekstensi model SCM terdistribusi ke fase lain dari pipa pengembangan perangkat lunak. Kami tidak memiliki model yang baik untuk sistem rilis rilis terdistribusi, pengujian otomatis terdistribusi, kontrol kualitas, kontrol rilis, dll. Kami hanya mendapatkan beberapa dukungan eksperimental untuk cadangan terdistribusi, dan itu setelah beberapa dekade penelitian. Karena itu, Git menawarkan lebih banyak kepada pengembang dan lebih sedikit pada proses pengembangan perangkat lunak. Semua implementasi Git pada akhirnya memberkati satu repo menjadi yang utama, yang menyederhanakan kemampuan Git yang paling menarik menjadi faksimili dari yang SVN.
Edwin Buck
1
@hibbelig Git tidak memiliki repositori pusat, setiap repositori efektif (karena desainnya yang didistribusikan) sama. Ini berarti Anda memperbaiki pipa produksi untuk menangani semua repositori dengan setara, atau memberkati satu repositori secara artifisial dengan status "peningkatan artifisial" (alias repositori sentral ). Jika Anda melakukan yang pertama, tidak ada yang tahu banyak tentang membangun pipa paralel di mana rilis bisa datang dari meja pengembang mana pun, jika Anda melakukan yang terakhir, janji pemrosesan yang didistribusikan ditipu oleh konvensi terpusat.
Edwin Buck
6

Saya akan memilih SVN karena lebih tersebar luas dan lebih dikenal.

Saya kira, Git akan lebih baik untuk pengguna Linux.

Burkhard
sumber
1
Namun ini berubah dengan cepat. SVN kehilangan pangsa pasar, sementara GIT memperoleh: Misalnya: wikivs.com/wiki/Git_vs_Subversion#Popularitas atau programmer.stackexchange.com/questions/136079/…
Zelphir Kaltstahl
@ Zpphir: Saya tidak akan menelepon 7 tahun dengan cepat, tapi ya, GIT mendapatkan pangsa pasar dan khususnya cara yang lebih baik untuk menggabungkan file.
Burkhard
4

Git tidak didukung secara native di bawah Windows, dulu. Ini dioptimalkan untuk sistem Posix. Namun menjalankan Cygwin atau MinGW memungkinkan Anda menjalankan Git dengan sukses.

Saat ini saya lebih suka Git daripada SVN, tetapi butuh beberapa saat untuk melewati ambang batas jika Anda berasal dari CVS, tanah SVN.


sumber
8
Definisikan secara asli. msysgit berfungsi dengan baik
Milan Babuškov
4

Saya mungkin akan memilih Git karena saya merasa ini jauh lebih kuat daripada SVN. Ada layanan Code Hosting murah yang bekerja sangat bagus untuk saya - Anda tidak perlu melakukan backup atau pekerjaan pemeliharaan - GitHub adalah kandidat yang paling jelas.

Yang mengatakan, saya tidak tahu apa-apa mengenai integrasi Visual Studio dan sistem SCM yang berbeda. Saya membayangkan integrasi dengan SVN menjadi lebih baik.

Christoph Schiessl
sumber
4

Saya telah menggunakan SVN untuk waktu yang lama, tetapi setiap kali saya menggunakan Git, saya merasa bahwa Git jauh lebih kuat, ringan, dan meskipun sedikit melibatkan kurva belajar tetapi lebih baik daripada SVN.

Apa yang saya catat adalah bahwa setiap proyek SVN, seiring pertumbuhannya, menjadi proyek yang sangat besar kecuali diekspor. Sedangkan, proyek GIT (bersama dengan data Git) berukuran sangat ringan.

Di SVN, saya telah berurusan dengan pengembang dari pemula ke ahli, dan pemula dan perantara tampaknya memperkenalkan konflik File jika mereka menyalin satu folder dari proyek SVN lain untuk menggunakannya kembali. Padahal, saya pikir di Git, Anda cukup menyalin folder dan berfungsi, karena Git tidak memperkenalkan folder .git di semua subfoldernya (seperti halnya SVN).

Setelah berurusan dengan banyak SVN sejak lama, saya akhirnya berpikir untuk memindahkan pengembang saya dan saya ke Git, karena mudah untuk berkolaborasi dan menggabungkan pekerjaan, serta satu keuntungan besar adalah bahwa perubahan salinan lokal dapat dilakukan sebanyak diinginkan, dan akhirnya didorong ke cabang di server dalam sekali jalan, tidak seperti SVN (di mana kita harus melakukan perubahan dari waktu ke waktu di repositori di server).

Adakah yang bisa membantu saya memutuskan apakah saya harus pergi bersama Git?

Waqar
sumber
Saya tidak akan memanggil pengembang yang menyalin folder terkontrol SVN ke proyek lain untuk menggunakannya kembali dan tidak mengharapkan masalah yang jelas 'perantara'. Saya akan memanggil mereka novis. Ya, Anda benar, ini disebabkan oleh sub-folder .svn yang memberi tahu SVN pada repositori apa yang dimiliki file-file tersebut. Jika pengguna menghapus sub-folder .svn ini, maka mereka dapat mengimpor folder tersebut ke proyek SVN baru. Saya sendiri masih menggunakan SVN, tetapi kebutuhan saya sedikit. GIT sangat bagus untuk proyek yang lebih besar.
dyasta
3
Klien svn terbaru tidak memerlukan .svnfolder di setiap sub-direktori. Itu "memperbaiki" kesalahan penyalinan sebelum terjadi.
Edwin Buck
4

Turun ke ini:

Apakah pengembangan Anda akan linier? Jika demikian, Anda harus tetap menggunakan Subversion.

Jika di sisi lain, pengembangan Anda tidak akan linier, yang berarti bahwa Anda perlu membuat percabangan untuk perubahan yang berbeda, dan kemudian menggabungkan perubahan tersebut kembali ke jalur pengembangan utama (dikenal sebagai Git sebagai cabang utama) maka Git akan melakukan BANYAK lagi untuk Anda.

seedg
sumber
3

Sudahkah Anda mencoba Bzr ?

Cukup bagus, kononikal (orang-orang yang membuat Ubuntu) membuatnya karena mereka tidak suka yang lain di pasaran ...

Omar Kooheji
sumber
Dukungan windows benar-benar membutuhkan sedikit pekerjaan di sini. Tidak begitu banyak sehingga saya belum cukup senang menggunakannya untuk semua pemrograman saya baru-baru ini di Windows (yang saya lakukan cukup adil), atau apa pun, tapi masih ...
SamB
Hampir 100% dari waktu dengan OS, bahwa orang-orang "membuatnya [perangkat lunak apa pun] karena tidak suka apa pun di pasar".
WhyNotHugo
@Hugo Dengan open source, jika mereka menyukai sesuatu yang lain di pasaran, mereka akan berkontribusi padanya daripada membuat sesuatu yang baru.
yingted
Ini sama sekali bukan jawaban untuk pertanyaan
Albert van der Horst
@AlbertvanderHorst Tidak bukan, pertanyaan itu dijawab di hari-hari liar barat SO ketika tidak ada yang tahu lebih baik, dan menawarkan alternatif. Dapat diperdebatkan dalam tergesa-gesa saya sepertinya saya juga salah mengeja nama Canonical. Memalukan untukku!
Omar Kooheji
3

Bolehkah saya memperluas pertanyaan dan bertanya apakah Git bekerja dengan baik di MacOS?

Membalas Komentar: Terima kasih atas beritanya, saya sudah tak sabar untuk mencobanya. Saya akan menginstalnya di rumah di Mac saya.

Robert Gould
sumber
1
Ya, itu bekerja dengan indah. Saya menginstalnya melalui MacPorts dan menggunakannya setiap hari.
Greg Hewgill
Itu benar. Ini bagus untuk sistem berbasis POSIX (Unix, Linux, Solaris, BSD, dll). Benar-benar hanya Windows tempat masalahnya.
Oli
dan git-gui dan gitk mungkin bekerja sama di bawah OS-X seperti di Linux dan Windows. Berlawanan dengan tortoiseSVN, AFAIK mana yang hanya untuk windows?
David Schmitt
@ David Schmitt: well, tortoisesvn.tigris.org menyebutnya "Ekstensi Windows Shell untuk Subversi", jadi saya anggap begitu, ya ;-).
SamB
@Robert: bagaimana pengalaman Anda dengan git di OS X?
David Schmitt
2

SVN sepertinya pilihan yang baik di bawah Windows, seperti yang ditunjukkan oleh orang lain.

Jika beberapa pengembang Anda ingin mencoba GIT, itu mungkin selalu menggunakan GIT-SVN di mana repositori SVN dibuat kembali dalam repositori GIT. Maka dia harus bisa bekerja secara lokal dengan GIT dan kemudian menggunakan SVN untuk mempublikasikan perubahannya ke repositori utama.

Pierre
sumber
1

Anda harus menggunakan DVCS, ini seperti lompatan kuantum dalam manajemen sumber. Secara pribadi saya menggunakan Monoton dan mempercepat waktu pengembangan tanpa akhir. Kami menggunakannya untuk Windows, Linux dan Mac dan sudah sangat stabil. Saya bahkan meminta buildbot mengerjakan proyek malam hari di setiap platform.

DVCS ketika sedang didistribusikan biasanya berarti Anda akan membuat server pusat hanya untuk orang-orang untuk mendorong perubahan ke dan dari.

Phil Hannent
sumber