Mempertahankan kontrol riwayat versi vs Refactoring dan Dokumentasi

11

Hampir tidak ada biaya untuk menggunakan riwayat komit yang dikelola oleh sistem kontrol versi. Namun, selama upaya refactoring (atau reorganisasi / pembersihan) proyek besar, fungsi dan kelas dan bahkan ruang nama akan dipindahkan; terkadang beberapa file akan digabung bersama dan file lainnya akan dipisah. Perubahan ini sering menyebabkan hilangnya riwayat komit asli dari beberapa file.

Menurut pendapat pribadi saya, up-menjaga organisasi proyek lebih penting daripada menjaga sejarah kode sumber. Organisasi proyek yang baik memungkinkan fitur-fitur baru ditambahkan secara terus menerus dengan upaya yang masuk akal, sementara nilai riwayat kode sumber tampak meragukan.

Lebih lanjut, dengan penggunaan unit test, masalah regresi diidentifikasi dengan cepat. Selama versi terbaru terus memenuhi semua persyaratan perangkat lunak, apakah kita benar-benar perlu menjaga sejarah kode sumber?

Saya memahami bahwa kode sumber apa pun yang dikirim harus dilestarikan karena kebutuhan untuk memberikan dukungan kepada pelanggan tanpa mengharuskan mereka untuk melakukan peningkatan versi utama. Tapi selain itu, apakah ada nilai dalam menjaga sejarah kode sumber yang dilakukan?

Apakah kode sumber membuat riwayat berperan dalam komunikasi antara anggota tim? Bagaimana jika kita menghapus histori komit, tetapi sebaliknya bergantung pada "kode sumber" + "kode pengujian unit" untuk komunikasi?

Apakah keberadaan sejarah komit membuat orang puas dengan dokumentasi jangka panjang dari informasi penting tentang proyek, seperti perubahan desain / persyaratan utama dan aliran pemikiran yang mendorong perubahan tersebut?

rwong
sumber
3
Bergantung pada sistem kode sumber apa yang Anda gunakan, riwayat versi akan dipertahankan bahkan dengan pemindahan file dan yang lainnya. Riwayat untuk file yang dihapus juga harus tetap dapat diakses. Dan pada akhirnya yang penting adalah sejarah hasil akhir. Kelas X mungkin merupakan kombinasi dari kelas Y dan Z, tetapi sejarah akan memberi tahu Anda hal itu (terutama jika Anda memiliki komentar checkin yang baik), dan Anda masih dapat melacak kembali ke aslinya. Apakah saya melewatkan sesuatu di sini?
Adam Lear
1
These changes often lead to the loss of the original commit history of a few files.Lihatlah misalnya pada "git menyalahkan" - tidak ada yang hilang. Terkadang mungkin agak sulit untuk menemukan, tetapi selalu ada.
maaartinus
1
Dalam refactoring besar, perlu luangkan waktu untuk memikirkan & merencanakan pembaruan kontrol sumber. Seringkali dengan upaya ekstra minimal atau kecil, lebih banyak informasi dapat disimpan. mis. jika Anda membagi file menjadi 3 bagian, pertahankan dulu penyalinan dokumen asli ke masing-masing dari 3 penggantiannya; kemudian berkomitmen untuk memodifikasi ketiganya ...
UuDdLrLrSs

Jawaban:

5

Untuk menggunakan histori komit untuk lebih dari komentar tipe "perubahan yang dibuat" atau "bug tetap", itu harus dikaitkan dengan sistem pelacakan masalah Anda. Setiap perubahan, setiap komitmen, harus memiliki beberapa masalah yang terkait dengannya sehingga Anda tahu apa yang berubah, oleh siapa, dan mengapa.

Selama versi terbaru terus memenuhi semua persyaratan perangkat lunak, apakah kita benar-benar perlu menjaga sejarah kode sumber?

Perangkat lunak yang cukup kompleks jarang memiliki semua persyaratan diimplementasikan dan semua bug diperbaiki untuk banyak alasan, jadi saya pikir pernyataan Anda di sini adalah, katakanlah, optimis.

Misalkan Anda menggunakan versi 7.8 program Anda. Tetapi Anda mendukung, di lapangan, 12 versi aktif berbeda, seperti 1.6, 2.2, 2.8, dan sebagainya. Masing-masing tidak akan ditingkatkan ke versi terbaru karena berbagai alasan, jadi Anda mendukung semua dengan perbaikan bug. Seorang pelanggan menemukan bug di rilis 7.8 terbaru Anda. Anda memperbaikinya di 7.8. Bagaimana Anda tahu berapa banyak dari rilis lain yang perlu diperbaiki? Tanpa riwayat sumber dan pelacakan masalah Anda tidak.

Erik
sumber
7

nilai riwayat kode sumber tampak meragukan.

Saya sudah memiliki insinyur yang kembali beberapa tahun ke dalam kode sumber mencari jawaban mengapa ada sesuatu seperti itu. Terkadang cara berbagai hal berevolusi dari waktu ke waktu adalah penting untuk memahami bug, tetapi itu bukan sesuatu yang biasanya dipikirkan ketika mendokumentasikan sesuatu (atau bahkan harus didokumentasikan).

Juga, mungkin ada alasan hukum yang sangat baik untuk menyimpan riwayat kode sumber. Sebagian besar kode sumber tempat sampah-menyelam yang harus saya lakukan (sebagai insinyur build / SCM) telah atas permintaan departemen hukum perusahaan saya.

ebneter
sumber
1
Secara pribadi saya menemukan bahwa walaupun jarang melihat sejarah sama sekali, pada saat dibutuhkan, kemampuan untuk melakukannya sangat berharga. Jadi saya lebih suka melestarikan sejarah ketika praktis untuk melakukannya.
UuDdLrLrSs
3

Selama versi terbaru terus memenuhi semua persyaratan perangkat lunak, apakah kita benar-benar perlu menjaga sejarah kode sumber?

Tapi selain itu, apakah ada nilai dalam menjaga sejarah kode sumber yang dilakukan?

Ya untuk keduanya. Mungkin bermanfaat untuk mengetahui kapan sesuatu diubah, oleh siapa dan mengapa. Jika Anda kehilangan riwayat, kemampuan Anda untuk melakukan ini dipengaruhi.

Apakah kode sumber membuat riwayat berperan dalam komunikasi antara anggota tim? Bagaimana jika kita menghapus histori komit, tetapi sebaliknya bergantung pada "kode sumber" + "kode pengujian unit" untuk komunikasi?

Ya itu. Pendekatan "kode sumber" + "kode pengujian unit" tidak memberi tahu Anda siapa / kapan / mengapa.

Apakah keberadaan sejarah komit membuat orang puas dengan dokumentasi jangka panjang dari informasi penting tentang proyek, seperti perubahan desain / persyaratan utama dan aliran pemikiran yang mendorong perubahan tersebut?

Saya kira Anda bisa mengatakan itu. Tetapi beberapa pengembang pernah mendokumentasikan perubahan dalam persyaratan / desain. Dan tentu saja hampir tidak ada yang mencatat aliran pemikiran yang mendorong pengembangan awal, atau modifikasi berikutnya. Memiliki riwayat komit (dan terutama pesan log komit), dan tautan silang ke sistem pelacakan masalah / bug paling tidak memberikan Anda sesuatu untuk mulai. Dan itu lebih baik daripada tidak sama sekali, atau satu set snapshot rilis.

Stephen C
sumber
1
+1 Juga, bergantung pada kode untuk komunikasi berarti bahwa informasi yang akan ada dalam sejarah juga ada dalam komentar, melanggar KERING.
Larry Coleman
1
@Larry - benar. Namun pada kenyataannya, masalahnya adalah informasi yang direkam terlalu sedikit daripada terlalu banyak (atau digandakan) informasi.
Stephen C