Bagaimana pengembang aplikasi profesional menggunakan sistem kontrol versi, seperti GIT dan Subversion?

9

Saya seorang pengembang pemula dan saya telah bertanya-tanya sejak awal, bagaimana cara profesional menggunakan alat seperti GIT dan Subversion (saya tidak memiliki pemahaman yang sangat baik tentang alat ini), untuk memenuhi kebutuhan proyek mereka. Jika mereka menggunakannya, bagaimana saya mengatur sesuatu seperti itu?

Aplikasi saya tidak begitu besar dan saya belum bekerja dalam tim, apakah mereka akan sangat membantu saya?

Ada pertanyaan di situs ini tentang cara menggunakan alat, tetapi saya membutuhkan dukungan pemula.

Wolfi
sumber
5
Git dan Subversion datang dengan instruksi; mereka pada dasarnya adalah repositori yang menyimpan kode pengembangan dengan cara yang terstruktur. Pengembang individual mendapat manfaat dari memiliki catatan lengkap tentang perubahan kode, dan fasilitas cadangan yang kuat. Tim proyek mendapat manfaat dari kemampuan untuk berbagi repositori kode sumber yang sama, menjaga perubahan dalam sinkronisasi antara workstation.
Robert Harvey

Jawaban:

13

Kontrol sumber ada di mana-mana - orang mungkin bahkan mengatakan Anda tidak dapat menyebut diri Anda seorang pengembang profesional jika Anda tidak menggunakannya. Bahkan ketika berkembang sendiri, kontrol sumber masih menawarkan beberapa manfaat. Pada akhirnya ini menyediakan baik sejarah dan jalur membatalkan yang luas. Ini juga membebaskan Anda untuk bereksperimen lebih banyak, aman dalam pengetahuan bahwa jika Anda tidak menyukai versi baru, Anda selalu dapat kembali ke apa yang Anda miliki sebelumnya.

Yang mengatakan, alur kerja, bahkan dalam sistem kontrol sumber seperti Subversion atau Git, sangat bervariasi dari tim ke tim. Tempat terbaik untuk memulai mungkin memilih sistem kontrol sumber dan membiasakan diri dengan alur kerja standarnya (dengan mengingat bahwa Anda harus mengubah alur kerja sepanjang kehidupan profesional Anda).

Untuk memulai, saya akan merekomendasikan Git. Saya seorang penggemar Git, tetapi lebih khusus memilih Git akan memungkinkan Anda untuk mulai dengan bekerja tanpa server dan hanya menyiapkan server ketika masuk akal bagi Anda. Subversi, di sisi lain, membutuhkan server dan pengaturannya, meskipun tidak terlalu sulit, menakutkan ketika Anda tidak terbiasa dengan hal semacam itu.

Berikut ini adalah ikhtisar yang baik dari beberapa aturan praktis yang baik untuk kontrol sumber secara umum: http://scottonwriting.net/sowblog/archive/2008/11/13/163320.aspx

Saat bekerja sendiri, Anda tidak perlu banyak alur kerja. Berkomitmen awal, komit sering. Jika Anda mulai meluncurkan versi, beri tag pada rilis Anda. Buat cabang untuk eksperimen atau pekerjaan panjang yang berbeda (Git membuatnya lebih murah dan lebih sederhana daripada Subversion).

Michael
sumber
1
Jawaban bagus kecuali satu poin. Saya pasti tidak akan memilih subversi yang membutuhkan server karena ini adalah kelemahan terbesar, sebagian karena saya benar-benar menggunakannya tanpa cukup sering; repositori dapat hidup di direktori lokal dan daripada pengaturannya adalah perintah tunggal. Perbedaan utama antara Git dan Subversion adalah bahwa sistem terdistribusi seperti Git jauh lebih fleksibel daripada yang terpusat seperti Subversion.
Jan Hudec
5

Sistem kontrol sumber (SVN, Git dll) pada tingkat yang sangat sederhana memungkinkan Anda untuk menyimpan riwayat perubahan file. Ini memungkinkan Anda untuk melihat bagaimana kode Anda telah berubah dari waktu ke waktu dan mengembalikan perubahan yang mungkin tidak Anda inginkan (mis. Perubahan tidak berfungsi seperti yang diharapkan, Anda dapat mengembalikan kode ke keadaan yang sebelumnya diketahui). Ini adalah sesuatu yang bahkan dikembangkan sendiri akan menjadi sangat berharga bagi Anda setelah Anda mulai menggunakannya.

Segera setelah Anda bekerja dengan orang lain dalam sebuah tim, manfaatnya bertambah lebih banyak karena banyak orang dapat mengubah file yang sama dan jika perubahan tidak bertentangan (mis. 2 orang mengubah bagian file yang berbeda) perubahan akan digabungkan secara otomatis. Jika ada konflik maka Anda akan dapat melihat perubahan Anda di sebelah kolega Anda dan berdiskusi dengan mereka bagaimana menggabungkan perubahan tersebut.

Anda juga dapat membuat snapshot basis kode (biasanya disebut tag) ketika merilis versi kode sehingga Anda dapat dengan mudah men-debug masalah meskipun sumber utama telah pindah dengan fitur-fitur baru yang mungkin belum dirilis.

Berikut adalah beberapa sumber yang bermanfaat:

Bangun dan jalankan Subversion dan Tortoise SVN dengan Visual Studio dan .NET

Kontrol Versi dengan Subversi

Trevor Pilley
sumber
1
Tidak memberi +1, karena mempelajari Subversi sebagai sistem pertama agak kontraproduktif akhir-akhir ini ketika semua orang beralih ke sistem terdistribusi.
Jan Hudec
3

Tutorial untuk Pemula

Ada banyak tutorial (video dan teks) yang dapat membantu Anda memulai dari level yang sangat dasar. Git tampaknya memiliki pendekatan hebat untuk memperkenalkan topik dengan cara yang lembut untuk pemula yang memberi tahu Anda alasan pertama dan menggunakan pengulangan, definisi, dan grafik untuk membantu Anda mengingat nama dan fungsi perintah utama.

SVN

SVN dimaksudkan agar CVS dilakukan dengan lebih baik. CVS (concurrent Version System) bekerja pada hal-hal file pada suatu waktu, SVN biasanya bekerja pada hal-hal direktori atau pohon direktori pada suatu waktu. SVN (dan CVS atau sistem lain) mungkin penting jika Anda menggunakannya di tempat kerja, tetapi pendapat saya adalah bahwa kami secara signifikan meningkatkan pemahaman kami tentang apa yang diperlukan untuk melakukan kontrol sumber setiap beberapa tahun, jadi sama seperti Anda memilih model yang lebih baru komputer, Anda harus memilih alat kontrol sumber model akhir. Ini adalah investasi besar untuk mengubah sistem, dan sejarah kode bisa hilang, meskipun untuk banyak sistem ada konverter yang memungkinkan Anda memigrasi kode Anda serta riwayat dan artefak lain yang dibuat oleh sistem yang sudah pensiun.

Kontrol Sumber Profesional Memenuhi Kebutuhan Profesional

Pertanyaan Anda "Bagaimana cara profesional menggunakan alat seperti GIT dan Subversion untuk memenuhi kebutuhan proyek mereka?" berkaitan erat dengan pertanyaan "Bagaimana tim bekerja sama tanpa saling menghalangi sementara masih bekerja secepat mungkin?"

Kode ini sering berubah dengan beberapa pengembang membuat kode yang akan digunakan pengembang lain, dan dengan berbagai pemangku kepentingan membutuhkan tingkat stabilitas dan inovasi yang berbeda. Sistem kontrol sumber membantu dengan menyimpan kode untuk digunakan oleh tim, menjaga setiap perubahan sesuai konteks dengan versi yang berubah seiring waktu dan seringkali juga dengan cabang yang dikendalikan salinan kode yang berfungsi untuk mengisolasi kelompok perubahan dari kelompok perubahan lain.

Menyatukan semuanya kembali, menggabungkan pekerjaan banyak anggota tim adalah tugas yang dalam SVN dan sistem yang lebih lama terpusat dan sulit. Untuk tim yang menggunakan Git, penggabungan menjadi lebih sederhana dan lebih mudah diakses oleh pengaruh seluruh tim alih-alih beberapa pakar. Dalam SVN, percabangan bisa menjadi masalah pribadi, tetapi penggabungan sering memiliki dampak yang menyakitkan bagi tim dan pergerakan kode kembali ke jalur utama bisa menyakitkan dari perspektif mendapatkan izin, menghindari kerusakan, dan tingkat upaya yang diperlukan tugas .

Dari repositori kontrol sumber yang mapan, profesional dapat memenuhi kebutuhan lain seperti mendiagnosis masalah hingga akar permasalahannya. Jika ada versi kode yang digunakan untuk bekerja, dan masalah yang baru ditemukan yang terjadi di versi saat ini, dimungkinkan untuk melangkah maju dan mundur melintasi sejarah untuk menunjukkan titik ketika masalah terjadi. Di SVN, kemampuan ini belum matang, tetapi di Git pencarian untuk versi gagal / pertama yang gagal didukung oleh perintah yang disebut git bisect. Masalahnya akan disebabkan oleh salah satu perubahan sumber antara dua versi yang berpotensi diagnosis yang jauh lebih mudah daripada pencarian seluruh basis kode.

Maaf mengoceh, semoga ini membantu Anda dalam perjalanan menuju menggunakan kontrol sumber.

Pengembang Don
sumber
0

Tim saya menggunakan sistem kontrol versi tim yang dikembangkan sendiri. (Sayangnya, Git tampaknya belum berfungsi pada file sumber "i" asli IBM). Tetapi secara pribadi, setelah saya menarik sumber dari sistem itu, saya menggunakan Git selama pengembangan saya, sampai proyek selesai dan saya memeriksanya kembali ke tim VCS.

Seperti yang mereka katakan dalam pemilihan ... lakukan lebih awal, lakukan lebih sering. Saat saya mengerjakan fitur baru, saya melakukan. Saya melakukan antara kompilasi, dan pada setiap upaya untuk memperbaiki kesalahan kompiler, setiap kali saya membuat perubahan selama pengujian dan debugging. Ini memungkinkan membuatnya lebih mudah untuk mencoba beberapa variasi pada suatu tema dan dengan mudah mundur dari itu jika diperlukan, terutama ketika perubahan dikoordinasikan di beberapa file.

Git telah meningkatkan cara saya mendekati pembangunan.

WarrenT
sumber
'Git tampaknya belum berfungsi pada file sumber IBM "asli")' - Git harus bekerja pada file apa pun. Apa masalahnya di sini?
Marnen Laibow-Koser
@ MarnenLaibow-Koser Sebagian besar pengembang IBM i bekerja dengan file sumber dengan apa yang kita sebut sistem file asli (lawas) QSYS, di mana file sumber memiliki format panjang tetap bawaan. Setiap baris dimulai dengan nomor urut 6 digit, tanggal perubahan 6 digit, kemudian baris teks kode sumber. Urutan dan tanggal perubahan dapat berubah meskipun kode sumber pada suatu baris tidak berubah. Solusi mungkin telah dikembangkan baru-baru ini. IBM & yang lain sekarang mendukung git pada IBM i. Dan itu seharusnya tidak menjadi masalah dengan sumber dalam file aliran "normal" di sistem file IFS lain pada IBM i.
WarrenT
Ya Tuhan, saya samar-samar ingat bahwa dari melakukan pengembangan AS / 400 20 tahun yang lalu. Tapi saya pikir, tidak ada alasan bahwa Git tidak akan bekerja dengan file seperti itu. Anda mungkin perlu menulis driver gabungan yang mengabaikan nomor baris, tetapi itu harus mudah dilakukan. (Saya ingin tahu apakah itu yang dilakukan IBM ...)
Marnen Laibow-Koser
Tetapi, jika Anda menghapus nomor baris dan tanggal perubahan baris, maka Anda telah kehilangan mereka ketika Anda memeriksa kembali sesuatu dari Git. Tidak mudah meyakinkan beberapa orang bahwa mereka tidak lagi membutuhkan kencan itu, setelah mengandalkan mereka selama mungkin 3 dekade. Ya, saya tahu Git menyalahkan menyediakan hal yang sama, tetapi orang enggan menyerahkan sesuatu yang sudah lama mereka andalkan, meskipun itu tidak selalu merupakan argumen logis.
WarrenT
Anda sebenarnya dapat membuat filter Git clean / smudge untuk mengembalikan tanggal dari kesalahan Git. :)
Marnen Laibow-Koser