Saya lulus dari perguruan tinggi di bidang Ilmu Komputer setahun yang lalu, dan sekarang saya bekerja di sebuah perusahaan pengembangan web kecil (saya dan satu pengembang lainnya, plus manajer, layanan pelanggan, dan penguji). Sampai sebelum saya mulai, tidak ada sistem kontrol sumber. Kami sekarang mulai mengimplementasikan SVN secara perlahan, tetapi pengembang (senior) lainnya (selanjutnya disebut Joe) menegaskan bahwa satu-satunya kode yang harus dikomit ke repositori SVN kami adalah kode yang telah diuji dan disetujui sebagai siap produksi. Itu berarti, pada proyek yang lebih besar, mungkin tidak ada komitmen selama berminggu-minggu pada suatu waktu atau lebih.
Apakah ini praktik normal? Sepertinya saya kehilangan banyak manfaat dari kontrol sumber, termasuk:
- Pelacakan kemajuan proyek secara cermat
- Pelacakan masalah saat muncul dan diselesaikan
- Mudah memutar balik kesalahan
- Pencadangan kode mudah, jadi kami tidak kehilangan banyak jika workstation turun
- Lebih mudah untuk mengidentifikasi secara tepat kode apa yang berjalan di lokasi produksi, dengan asumsi kami mencap revisi menjadi executable seperti yang dijelaskan di sini
- Kolaborasi mudah (meskipun kami tidak melakukan kerja tim; itu semua proyek solo)
- Dll
EDIT: Saya harus menekankan bahwa secara historis, belum ada kerja tim yang sebenarnya di perusahaan ini; hanya dua pengembang yang mengerjakan proyek terpisah. Juga, banyak proyek yang kecil, sehingga dapat diselesaikan dalam beberapa minggu. Dan perusahaan telah berkecimpung dalam bisnis selama lebih dari satu dekade dan bergaul dengan baik tanpa kendali sumber. Proyek biasanya selesai dalam jangka waktu perkiraan mereka.
sumber
Jawaban:
Jika proyek selesai dalam jangka waktu perkiraan mereka, apakah aman untuk menganggap bahwa klien adalah klien yang bahagia? :)
Tampaknya perusahaan mulai mengambil jenis-jenis proyek baru juga dan melalui beberapa rasa sakit yang tumbuh atau "rasa sakit yang berubah". Banyak asumsi yang terjadi di sini ... Tolong bersamaku!
Jika Anda yakin bahwa organisasi dan kontrol kode dapat membantu Anda dan tim Anda secara internal maka SVN harus dipertimbangkan, IMHO. Anda mendapatkan poin bonus jika rute ini benar-benar berfungsi dan perusahaan dapat membuat produk berkualitas lebih tinggi sehingga membuat pelanggan lebih bahagia!
Hati-hati jika tampaknya perjuangan dengan manajemen akan membuat lingkungan kerja yang tegang. Faktanya adalah pemilik telah membuat perusahaan. Dan tidak hanya itu, mereka telah membuat perusahaan yang sukses. Tidak mungkin mereka mendapatkan jackpot karena mereka jago bermain judi.
Bersikaplah hormat dan akhirnya Anda didengar.
Semoga ini akan menghasilkan tim yang lebih efisien dan lebih bahagia. Dalam pengalaman saya, itu sulit diperoleh dengan manajemen yang frustrasi.
sumber
Joe salah besar. Sekarang, Anda dapat membuat argumen bahwa Anda memiliki satu cabang "bersih" yang mewakili kode, siap-produksi kode. Tetapi tidak menggunakan kontrol sumber sampai barang siap terus terang merugikan diri sendiri. Agak seperti mencoba membuat martini tanpa gin.
sumber
"Senior" sebenarnya sangat tidak terampil. Kode apa pun yang dapat dikompilasi (dan lulus tes jika Anda memilikinya) harus berkomitmen untuk kontrol sumber. Kontrol sumber adalah aset utama untuk berbagi kode dan membangun SW secara bertahap.
Poin baiknya adalah memisahkan kode produksi (versi stabil terakhir) tetapi untuk sistem kontrol sumber kasus seperti itu berisi fitur-fitur seperti tag / label dan cabang.
Tim kami menjadi sangat curiga jika seseorang tidak melakukan apa pun dalam dua-tiga hari. Itu berarti dia memiliki beberapa masalah dan mungkin butuh bantuan. Poin lain dari kontrol sumber adalah bahwa biasanya dicadangkan secara teratur yang tidak berlaku untuk mesin pengembangan. Jika disk Anda macet, Anda kehilangan pekerjaan selama beberapa minggu.
sumber
Mengesampingkan pertanyaan apakah Joe benar atau salah (dia salah, ngomong-ngomong), menurut saya kompromi dapat dicapai jika Anda menggunakan sistem kontrol versi terdistribusi seperti Git atau Mercurial .
Dengan begitu, Anda dan pengembang lain akan bekerja di repositori lokal Anda, melakukan perubahan Anda ke kontrol sumber lebih awal dan sering, tetapi tidak mendorong perubahan Anda ke repositori "produksi" sampai mereka "diuji dan disetujui sebagai siap produksi". Anda akan memiliki sejarah lengkap dari setiap hal yang Anda kerjakan selama beberapa minggu, dan Joe akan memiliki repositori murni yang hanya memiliki sejarah perubahan yang diberkati sebagai siap untuk diproduksi.
sumber
git svn
untuk interaksi. Anda tidak perlu membeli apa pun dan Anda tidak perlu meyakinkan siapa pun; mereka bahkan tidak perlu tahu.git push
mengubah Anda ke beberapa mesin lain (sebagai cadangan). Itu tidak harus menjadi repositori "master".Tidak masuk akal, untuk alasan yang Anda sebutkan. Ini seperti menggunakan kontrol versi tanpa manfaat menggunakan kontrol versi.
sumber
Saya percaya Joe tidak mengerti bahwa sistem kontrol sumber bukanlah cadangan yang dimuliakan dari rilis produksi kode sumber, tetapi alat yang bermanfaat bagi programmer dengan meletakkan kata-kata pada langkah-langkah kecil dari kemajuan dan pematangan kode untuk masa depan Anda sendiri dan kolega. Mungkin Joe tidak terbiasa bekerja dalam tim dengan kode orang lain?
Pernah dianggap "mengapa baris kode ini ditambahkan"? Temukan komit yang memperkenalkannya, dan lihat komentarnya. Jika Anda hanya berkomitmen ketika akan berproduksi, komentar tidak akan cukup spesifik untuk berguna bagi Anda.
Saya juga menyarankan agar Anda menggunakan alat yang lebih kuat daripada SVN. Anda dapat melihat pengantar yang baik tentang kemungkinan di http://hginit.com/ oleh Joel Spoelsky.
Dia menggunakan lincah, dan ada beberapa pesaing hari ini. Git dianggap sangat kuat, dan https://github.com/ memiliki beberapa alat yang sangat, sangat berguna dan menyediakan akun pemula gratis sehingga Anda dapat mencobanya secara nyata.
sumber
Joe sepertinya tidak tahu tentang SVN, coba cari tahu tentang Branches, Tag dan Trunk ... Tag konsisten dengan apa yang diinginkan Joe. Beberapa membaca tentang praktik terbaik SVN tidak ada salahnya
sumber
Tidak pernah menggunakan SVN jadi saya tidak tahu apa prosedur untuk ini. Kami menggunakan ClearCase, dan praktik di sini adalah untuk setiap pengembang memiliki cabang pengembangan sendiri, kemudian cabang integrasi yang kami gabungkan ketika kami siap untuk memulai pengujian, dan satu atau lebih cabang rilis untuk kode terintegrasi dan teruji .
sumber
Joe adalah seorang hacker, bukan pengembang. Dia kedengarannya seperti peretas yang sangat baik, tetapi dia salah tentang cara menggunakan kontrol revisi. Jadi apa yang harus dilakukan?
Sepertinya saya organisasi Anda memiliki investasi di SVN, dan itu akan membatasi karir Anda untuk menantang Joe dan membatalkan investasi dolar di server SVN. Atur repo GIT dan gunakan antarmuka git svn untuk bekerja seperti yang Anda inginkan (Ini semua adalah perangkat lunak gratis dan akan memakan waktu satu jam hingga satu hari untuk pengaturan, semuanya pada workstation Anda). Sosialisasikan alur kerja Anda dengan Joe - ia dapat mempertahankan sistem kepercayaan "repo SVN yang tidak dicemari" dan mempertahankan kredibilitasnya di atas gajah putih yang mahal di sudut (dan ego).
Dalam waktu singkat saya berharap Joe akan melihat cara Anda bekerja, dan mulai melakukan hal yang sama. Dalam satu atau dua tahun, server SVN akan menjadi repo Git.
sumber
Anda bisa mencoba meyakinkan Joe dengan argumen di atas. Jika ini tidak berhasil, gunakan SVN secara lokal untuk pekerjaan pengembangan Anda sendiri dan berharap suatu saat akan diambil oleh Joe. Jika Anda tidak dapat meyakinkan mereka dengan argumen, lakukan hal yang Anda yakini dan tunjukkan bahwa itu berhasil. Jenis pendekatan yang didistribusikan tetapi dengan tooling yang ada.
sumber
Saya akan menggema @ Carson63000 di sini dan mengatakan bahwa saya telah melihat sikap ini sebelumnya, dan ini sebagian besar disebabkan oleh kemampuan percabangan / penggabungan yang mengerikan dari VCS. Memiliki cabang yang mengkompilasi dan lulus tes, dengan tag untuk setiap rilis, adalah pendekatan yang bagus tetapi tidak harus diikuti sampai pada titik bahwa tidak ada kode lain yang dikomit. DVCS pada umumnya, dan git pada khususnya, membuat percabangan operasi yang mudah dan umum dan itu mengurangi banyak kesulitan dengan alur kerja ini.
sumber
Alasan dukungan tag sistem kontrol versi adalah karena Anda dapat menandai kode yang disertifikasi dan pekerjaan harian Anda tetap dilakukan. Setiap kali Anda memiliki kode kualitas produksi, Anda mengkomitnya dengan tag dan Anda selesai. Anda tahu titik pasti dalam 'waktu' Anda harus kembali untuk mendapatkan apa yang dimiliki pelanggan. Dan Anda selalu dapat memeriksa dan membandingkan berbagai versi kode Anda. Dengan cara ini Anda berdua bisa bahagia dengan apa yang Anda miliki di basis data kontrol sumber. Ini bekerja untuk perusahaan tempat saya bekerja, yang memiliki 100 pengembang, semuanya bekerja pada proyek yang sama. Ini juga akan bekerja untuk Anda.
sumber
Sangat umum untuk hanya menyimpan hal-hal dalam sistem kontrol versi yang siap untuk pengiriman ke produksi. Begitulah cara itu dilakukan secara historis selama beberapa dekade, sejak masa lalu ketika penyimpanan disk menghabiskan biaya ratusan dolar per megabyte dan menyimpan semuanya terlalu mahal.
Ini tidak lagi dianggap sebagai cara terbaik untuk melakukan sesuatu, tetapi saya dapat sepenuhnya memahami mengapa orang masih melakukannya, karena banyak sistem kontrol versi yang lebih lama masih digunakan yang menyulitkan jika tidak mustahil untuk melakukan hal lain dan masih mempertahankan pengetahuan tentang apa yang Anda lakukan. setiap rilis (atau lebih tepatnya, tidak ada cara untuk mengetahui apa rilis itu tanpa memeriksa tag pada setiap file jika Anda perlu kembali. Saya telah melihat lebih dari satu repositori di mana satu-satunya cara untuk mendapatkan kembali yang lama rilis adalah untuk mengambil dari repositori file zip dengan kode sumber dan binari untuk rilis itu).
sumber