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?
sumber
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.Jawaban:
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.
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.
sumber
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.
sumber
Ya untuk keduanya. Mungkin bermanfaat untuk mengetahui kapan sesuatu diubah, oleh siapa dan mengapa. Jika Anda kehilangan riwayat, kemampuan Anda untuk melakukan ini dipengaruhi.
Ya itu. Pendekatan "kode sumber" + "kode pengujian unit" tidak memberi tahu Anda siapa / kapan / mengapa.
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.
sumber