Saya pernah membaca bahwa git commit harus dalam present imperense tense, misalnya "Tambahkan tes untuk x". Saya selalu menemukan diri saya menggunakan past tense, misalnya "Tes tambahan untuk x", yang terasa lebih alami bagi saya.
Berikut adalah komitmen John Resig baru-baru ini yang menampilkan pesan dua dalam satu:
Tweak beberapa set jQuery lagi hasil dalam tes manipulasi. Juga memperbaiki urutan hasil tes yang diharapkan.
Apakah itu penting? Yang mana yang harus saya gunakan?
git
git-commit
conventions
commit-message
Skilldrick
sumber
sumber
Jawaban:
Preferensi untuk pesan commit present-tense, style imperative datang dari Git sendiri. Dari Documentation / SubmittingPatches di repo Git:
Jadi, Anda akan melihat banyak Git melakukan pesan yang ditulis dengan gaya itu. Jika Anda bekerja pada tim atau perangkat lunak sumber terbuka, akan sangat membantu jika semua orang tetap pada gaya itu untuk konsistensi. Sekalipun Anda sedang mengerjakan proyek pribadi, dan Anda satu-satunya yang akan pernah melihat sejarah git Anda, akan sangat membantu jika Anda menggunakan mood imperatif karena ia membangun kebiasaan baik yang akan dihargai ketika Anda bekerja dengan orang lain.
sumber
rebase
ataucherry-pick
dan dalam kasus itu, komit dapat digunakan di luar konteks aslinya. Akibatnya, pesan komit harus ditulis sendiri tanpa mengharapkan pembaca untuk melihat pesan komit di sekitarnya. Saat Anda memetik sakura, lebih masuk akal untuk menerapkan "Perbaiki algoritme quicksort" atau "Penyortiran: Tingkatkan kinerja" daripada "Perbaikan bug # 124" atau "Penyortiran yang dimodifikasi untuk meningkatkan kinerja".Proyek Anda hampir selalu harus menggunakan bentuk lampau . Bagaimanapun, proyek harus selalu menggunakan bentuk yang sama untuk konsistensi dan kejelasan.
Saya mengerti beberapa argumen lain yang berpendapat untuk menggunakan present tense, tetapi biasanya tidak berlaku. Poin-poin berikut ini adalah argumen umum untuk menulis dalam present tense, dan tanggapan saya.
Ini adalah alasan yang paling tepat yang ingin digunakan saat ini, tetapi hanya dengan gaya proyek yang tepat. Cara berpikir ini menganggap semua komitmen sebagai peningkatan atau fitur opsional, dan Anda bebas untuk memutuskan komitmen mana yang harus dipertahankan dan mana yang ditolak dalam repositori khusus Anda.
Argumen ini berfungsi jika Anda berurusan dengan proyek yang benar-benar didistribusikan. Jika Anda berurusan dengan proyek terdistribusi, Anda mungkin sedang mengerjakan proyek sumber terbuka. Dan itu mungkin proyek yang sangat besar jika benar-benar didistribusikan. Bahkan, itu mungkin kernel Linux atau Git. Karena Linux kemungkinan besar yang menyebabkan Git menyebar dan mendapatkan popularitas, mudah untuk memahami mengapa orang menganggap gayanya sebagai otoritas. Ya, gayanya masuk akal dengan kedua proyek itu. Atau, secara umum, ini bekerja dengan proyek-proyek besar, open source, didistribusikan .
Yang sedang berkata, sebagian besar proyek dalam kontrol sumber tidak bekerja seperti ini. Biasanya tidak benar untuk sebagian besar repositori. Ini adalah cara berpikir modern tentang komit: Subversion (SVN) dan repositori CVS hampir tidak dapat mendukung gaya check-in repositori ini. Biasanya cabang integrasi menangani penyaringan check-in yang buruk, tetapi yang umumnya tidak dianggap sebagai "opsional" atau "fitur yang bagus untuk dimiliki".
Dalam sebagian besar skenario, ketika Anda membuat komitmen ke repositori sumber, Anda menulis entri jurnal yang menjelaskan apa yang berubah dengan pembaruan ini, untuk memudahkan orang lain di masa depan untuk memahami mengapa perubahan dilakukan. Ini umumnya bukan perubahan opsional - orang lain dalam proyek ini diharuskan untuk menggabungkan atau membuat ulang. Anda tidak menulis catatan harian seperti "Dear diary, hari ini aku bertemu anak laki-laki dan ia mengatakan halo kepada saya.", Tapi malah Anda menulis "Saya bertemu anak laki-laki dan dia berkata halo kepada saya."
Akhirnya, untuk proyek-proyek yang tidak terdistribusi seperti itu, 99,99% waktu seseorang akan membaca pesan komit adalah untuk membaca sejarah - sejarah dibaca dalam bentuk lampau. 0,01% dari waktu itu akan memutuskan apakah mereka harus menerapkan komit ini atau mengintegrasikannya ke cabang / repositori mereka.
Tidak, saya jamin bahwa sebagian besar proyek yang pernah masuk dalam sistem kontrol versi memiliki sejarahnya di masa lalu (saya tidak punya referensi, tapi mungkin benar, mengingat argumen present tense baru sejak Git). Pesan "Revisi" atau komit pesan dalam present tense hanya mulai masuk akal dalam proyek yang benar-benar didistribusikan - lihat poin pertama di atas.
Lihat poin pertama. 99,99% dari waktu seseorang akan membaca pesan komit adalah untuk membaca sejarah - sejarah dibaca dalam bentuk lampau. 0,01% dari waktu itu akan memutuskan apakah mereka harus menerapkan komit ini atau mengintegrasikannya ke cabang / repositori mereka. 99,99% ketukan 0,01%.
Saya belum pernah melihat argumen yang baik yang mengatakan menggunakan tegang / tata bahasa yang tidak tepat karena lebih pendek. Anda mungkin hanya akan menyimpan 3 karakter rata-rata untuk pesan 50 karakter standar. Yang sedang berkata, present tense rata-rata mungkin akan menjadi beberapa karakter lebih pendek.
Tiket ditulis sebagai sesuatu yang saat ini sedang terjadi (mis. Aplikasi menunjukkan perilaku yang salah ketika saya mengklik tombol ini), atau sesuatu yang perlu dilakukan di masa depan (mis. Teks akan perlu ditinjau oleh editor).
Riwayat (mis. Pesan komit) ditulis sebagai sesuatu yang dilakukan di masa lalu (mis. Masalahnya telah diperbaiki).
sumber
Saya menulis deskripsi yang lebih lengkap tentang 365git .
sumber
Tetap dengan imperatif present tense karena
sumber
Untuk siapa Anda menulis pesan? Dan apakah pembaca biasanya membaca pesan sebelum atau sesudah kepemilikan dari komitmen itu sendiri?
Saya pikir jawaban yang baik di sini telah diberikan dari kedua perspektif, saya mungkin kurang menyarankan ada jawaban terbaik untuk setiap proyek. Suara split mungkin menyarankan sebanyak mungkin.
yaitu untuk meringkas:
Apakah pesannya terutama untuk orang lain, biasanya membaca di beberapa titik sebelum mereka menerima perubahan: Sebuah proposal tentang apa yang akan dilakukan perubahan terhadap kode yang ada.
Apakah pesannya didominasi sebagai jurnal / catatan untuk diri Anda sendiri (atau untuk tim Anda), tetapi biasanya membaca dari perspektif telah menerima perubahan dan mencari kembali untuk menemukan apa yang terjadi.
Mungkin ini akan memotivasi tim / proyek Anda.
sumber
apakah itu penting? orang-orang pada umumnya cukup pintar untuk menafsirkan pesan dengan benar, jika tidak, Anda mungkin tidak seharusnya membiarkan mereka mengakses repositori Anda!
sumber
Ini terserah kamu. Cukup gunakan pesan komit sesuai keinginan. Tetapi lebih mudah jika Anda tidak beralih antara waktu dan bahasa.
Dan jika Anda berkembang dalam tim - itu harus didiskusikan dan ditetapkan tetap.
sumber