Di mana saya dapat menemukan sumber daya "SVN untuk Pengguna Git"? [Tutup]

18

Jadi saya mengambil pekerjaan di mana perusahaan menggunakan SVN (tetapi akan pindah ke Git di masa depan). Masalahnya adalah saya tidak tahu SVN. Saya sudah mencoba banyak pertanyaan Google dan yang bisa saya temukan hanyalah tutorial SVN-> Git, "Mengapa Git lebih baik daripada SVN" blog, dan "cheat sheet" tertentu yang memberikan (beberapa) perintah yang sebanding ...

Singkat membaca buku O'Reilly di SVN, apa instruksi singkat (tapi tidak terlalu singkat) untuk SVN untuk pengguna Git?

agen154
sumber
3
Singkatnya: a) tidak ada indeks, b) svn up = git pull, c) svn commit = git commit && git push d) cabang ditiru oleh direktori ... ;-)
johannes
1
Saya tidak yakin bagaimana saya bisa membuat ini lebih pada topik ...
agent154
5
Tidak mungkin. Di sebelah segala sesuatu adalah offtopic pada P.SE.
JensG
@ agent154 jangan meminta kami menjadi mesin pencari bersumber dari kerumunan untuk Anda. Identifikasi masalah yang Anda alami - masalahnya bukan "di mana saya dapat menemukan hal-hal di svn" itu "Saya mencoba melakukan sesuatu, dan saya tidak tahu bagaimana melakukannya." Jika itu sesuatu yang spesifik untuk perintah 'svn' dan Anda sedang mengerjakan cara untuk menuliskannya, tanyakan pada Stack Overflow. Jika ada sesuatu tentang alur kerja dan organisasi svn (kapan harus bercabang, kapan akan bergabung, bagaimana bekerja dengan pengembang lain) - maka tanyakan di sini.
2
Saya pikir masalah yang diidentifikasi adalah kurangnya sumber daya yang bahkan agak jauh tersedia untuk memahami SVN sebagai pengguna Git. Terus terang, saya menemukan diskusi tentang super berguna ini setelah menuangkan beberapa halaman hasil Google / DuckDuckGo tidak menemukan apa pun selain apa yang disebutkan OP.
Metagrapher

Jawaban:

8

Referensi kanonik adalah Buku Merah Subversion . Apa pun keahlian Anda di masa lalu, bacalah ini dari yang baru dan Anda akan mendapatkan semua informasi penggunaan yang Anda butuhkan. Itu tidak sulit atau sepenuhnya asing, kebanyakan orang mengatakan SVN jauh lebih mudah dipahami daripada git sehingga Anda harus baik-baik saja dengan hanya sedikit membaca perintah utama. The Bab penggunaan dasar harus membuat Anda bangun dan berjalan tanpa masalah.

Ada 2 perbedaan utama:

  • commit = push ke repo pusat. Tidak ada rebase atau komit lokal, tidak ada tarikan juga.
  • percabangan adalah dengan direktori. Yang terbaik untuk memikirkan seluruh repo sebagai struktur direktori, percabangan seperti membuat symlink dengan semantik copy-on-write. Sedangkan di git Anda membuat cabang seluruh repo dan beralih di antara mereka sehingga cabang baru 'overlay' copy pekerjaan Anda, dengan SVN Anda dapat menukar potongan repo Anda. Umumnya orang bercabang pada folder tingkat atas (biasanya disebut cabang) sehingga beralih menjadi lebih seperti gaya kerja 'overlay' git.

Percabangan itu sepele, penggabungan sama sekali tidak seburuk yang ingin dilakukan oleh para pembela DVCS, terutama jika Anda tetap menggunakan trio "folder tingkat atas" (disebut trunk, branch, dan tag).

Ada beberapa bit SVN yang mengalahkan, direktori jarang muncul di pikiran - di mana Anda checkout hanya bagian dari repo Anda. Ketika Anda membutuhkan lebih banyak bagian, Anda hanya memperbarui apa yang Anda butuhkan. Jika Anda memiliki repo besar (mis. Produk inti dan banyak plugin) ini brilian.

Ada beberapa bit yang tidak sebagus git, konflik pohon yang ditakuti muncul di benak - di mana Anda memiliki konflik di tingkat direktori (yaitu seseorang menghapus file yang telah Anda edit)

Jika Anda menggunakan Windows, gunakan TortoiseSVN. Itu batu utama.

gbjbaanb
sumber
Tergantung. Penggabungan dengan SVN menjadi buruk, ketika file telah dipindahkan (yang pada dasarnya adalah bentuk penghapusan + add yang dikelola oleh SVN sendiri) oleh seseorang DAN diubah oleh orang lain. Selain itu, jawaban yang bagus.
JensG
1
Saya memang menyebutkan masalah konflik pohon ... Keadaan seperti itu adalah masalah untuk scms lain, meskipun saya mengerti git menggunakan heuristik untuk mendeteksi jika file yang dipindahkan adalah sama, itu masih bisa salah jika perubahannya signifikan ( misal file tersebut dipecah menjadi 2).
gbjbaanb
Git tidak memerlukan heuristik untuk mendeteksi perubahan struktur pohon - Git memerlukan pengguna untuk memindahkan file git mv. SVN memiliki svn move, tetapi karena percabangan dan penggabungan dalam SVN adalah jenis peretasan, saya tidak percaya ini dapat secara otomatis menyelesaikan konflik pohon seperti git ...
Idan Arye
3
@IdanArye git mvdiimplementasikan sebagai tambah + hapus. git menggunakan heuristik untuk menentukan apakah pemindahan atau penyalinan terjadi selama komit (saya pikir defaultnya adalah, "apakah 80% + dari file itu sama?")
Izkata
3

Gunakan git svn jika memungkinkan. Saya telah dalam situasi Anda dan setelah setengah tahun frustrasi saya beralih ke git svn dan telah bahagia sejak itu.

Git svn memungkinkan Anda menggunakan repositori secara lokal dan melakukan ke server SVN kemudian ditangani oleh git svn rebaseyang mengubah perubahan lokal Anda ke trunk subversi dan kemudian git svn dcommitmelakukan komit yang dirangkum ulang.

Mungkin itu tidak optimal untuk penggunaan Subversion tingkat lanjut, tetapi karena Anda menggunakan git secara lokal semuanya baik-baik saja.

Saat menggunakan git clone Anda tidak harus mengkloning folder root subversi tetapi direktori target Anda secara langsung (clone trunk). Ini akan membuat git berjalan lebih cepat, jika tidak copy pekerjaan Anda bisa menjadi besar.

Penafian : Saya tidak tahu bagaimana situasinya ketika Anda ingin membuat cabang Subversion, dll. Tim yang saya bekerja sama tidak menggunakan cabang (hanya saya cabang git lokal).

wirrbel
sumber