Saya tidak setuju dengan aturan ini dan saya setuju dengan apa yang dikatakan Mason Wheeler . Saya ingin menambahkan beberapa ide.
Saya mencoba untuk melakukan setiap kali saya memiliki perubahan yang berarti untuk melakukan: ini bisa beberapa kali sehari jika saya memperbaiki beberapa bug kecil, atau seminggu sekali jika saya bekerja pada perangkat lunak yang lebih besar yang tidak dapat digunakan oleh sisa dari kode dengan cara apa pun yang berarti sampai mencapai kondisi yang konsisten.
Juga, saya menafsirkan komitmen sebagai penerbitan revisi yang bermakna yang menyumbangkan fungsionalitas baru ke basis kode. Saya pikir seseorang harus mencoba untuk membersihkan kode sebelum melakukan sehingga pengembang lain dapat memahami arti dan tujuan perubahan ketika mereka melihat sejarah revisi. Semakin sedikit perubahan yang dilihat pengembang lain dalam riwayat, semakin baik: ketika saya melihat riwayat revisi, saya ingin melihat peningkatan yang menambahkan beberapa fungsi yang berarti; Saya tidak tertarik pada setiap ide kecil yang dimiliki masing-masing pengembang dan ingin mencoba sebelum mereka mencapai solusi.
Selain itu, saya tidak berpikir itu ide yang baik untuk menggunakan server SVN (atau sistem kontrol versi apa pun) sebagai fasilitas cadangan yang snapshot saat ini dari kode tersebut dilakukan (asalkan dikompilasi): Anda dapat menggunakan stik USB atau USB-drive eksternal atau disk jaringan untuk mencerminkan kode Anda saat ini sehingga tidak hilang jika komputer Anda rusak. Kontrol revisi dan cadangan data adalah dua hal yang berbeda. Menerbitkan revisi tidak sama dengan menyimpan snapshot
kode Anda.
Akhirnya, saya berpikir bahwa itu seharusnya tidak menjadi masalah untuk dilakukan setiap sekarang dan kemudian (yaitu hanya ketika seseorang benar-benar puas dengan keadaan kode saat ini) dan menghindari penggabungan konflik bukanlah pembenaran yang baik untuk melakukan terlalu sering. Banyak konflik menggabungkan terjadi ketika orang yang berbeda bekerja pada file yang sama pada saat yang sama, yang merupakan praktik buruk (lihat misalnya artikel ini , poin 7). Menggabungkan konflik harus dikurangi dengan memecah proyek menjadi modul dengan antarmuka yang jelas dan ketergantungan sesedikit mungkin, dan dengan mengoordinasikan pekerjaan pengembang sehingga kode yang mereka kerjakan tumpang tindih sesedikit mungkin.
Hanya 2 sen saya.
SUNTING
Alasan lain terhadap komitmen prematur yang muncul di benak saya adalah bahwa versi (sangat) kereta tidak dapat diuji. Jika Anda berkomitmen pada trunk dan tim pengujian Anda menguji setiap hari, mereka mungkin tidak memiliki versi yang dapat diuji selama beberapa jam (atau selama sehari). Bahkan jika Anda tidak mencoba untuk memperbaiki bug dan hanya mengembalikan perubahan Anda, pembangunan kembali dapat memakan waktu beberapa jam. Dengan, katakanlah, lima penguji yang bekerja di tim Anda, Anda telah menyia-nyiakan waktu 5 x 2 = 10 jam karena kurangnya aktivitas. Itu terjadi pada saya sekali jadi saya benar-benar mencoba untuk menghindari komitmen prematur atas nama komit sesegera mungkin .