Haruskah git melakukan pesan menyebutkan file yang telah dimodifikasi?


50

Pada baris pertama dari pesan git commit, saya memiliki kebiasaan menyebutkan file yang dimodifikasi jika perubahan tidak menjangkau beberapa file, misalnya:

Add [somefunc] to [somefile] 

Apakah ini hal yang baik untuk dilakukan atau tidak perlu?

Jawaban:


84

Alat kontrol versi cukup kuat untuk membuat orang tersebut melihat file apa yang dimodifikasi, dan metode apa yang ditambahkan. Ini berarti bahwa secara umum, pesan log yang secara sederhana menduplikasi apa yang sudah ada telah mencemari log.

Anda menambahkan somefuncmetode untuk memenuhi persyaratan, yaitu:

  • untuk menambahkan fitur,
  • untuk menghapus bug atau
  • untuk memperbaiki kode sumber.

Ini berarti bahwa pesan log Anda harus menjelaskan fitur / bug apa yang terpengaruh atau apa tujuan refactoring.


5
Itu juga harus berbicara tentang mengapa . Opsi apa lagi yang Anda pertimbangkan, dan mengapa Anda memilih yang ini?
Jay Bazuzi

2
Saya mengomentari komit dengan cara yang sama seperti saya akan mengomentari kode, hanya dari perspektif tingkat yang lebih tinggi (mis., Lebih sedikit info, lebih banyak rangkuman). Secara pribadi, saya memecahnya ke tingkat file / modul (dalam git) tetapi hanya karena melakukan yang murah di muka dan saya suka bisa membaca sejarah seperti buku. YMMV.
Evan Plaice

1
Jika karena alasan tertentu orang tersebut melakukan banyak file sekaligus yang tidak terkait dengan bug yang sama, saya lebih suka mereka mendaftarkan nama file dan id bug sebelum musim panas. Saya tidak perlu tahu file.cpp: menambahkan getMethod (), tapi saya ingin bug id # 10 file.cpp: musim panas yang layak di sini. Jika mereka melakukan banyak file yang tersebar di beberapa laporan bug kita akan bicara, karena saya tidak begitu suka. Saya lebih suka mereka membuat banyak komitmen. Satu untuk setiap masalah yang mereka selesaikan.
William

@ William: Juga, jika ada masalah dengan satu perbaikan bug, adalah mungkin untuk mengembalikannya dengan keributan minimum. Gabungkan sepuluh perbaikan bug dalam satu komit, dan itu bisa menjadi masalah serius.
David Thornley

59

Tidak. Ada banyak cara untuk memeriksa isi komit. Komentar tersebut harus menggambarkan tujuan dari komit.


30

Jangan lupa untuk menambahkan TIKET / MASALAH NOMOR .

Jika Anda memiliki fitur atau sistem pelacakan masalah dengan # tiket atau # masalah , pastikan untuk memasukkan ID itu # di komit. Itu akan membantu siapa saja yang ingin tahu lebih banyak tentang fitur atau masalah yang sedang Anda kerjakan.

Dalam proyek terakhir saya, ada makro yang dikembangkan untuk memastikan bahwa 7 digit pertama dari komentar adalah nomor masalah yang valid dari pencarian yang jelas (sistem pelacakan masalah / fitur kami).


Bagaimana Anda melakukan perubahan refactoring?
Jules

@Jules refactoring memiliki tiket # yang tidak pernah selesai
Caleth

@Jules satu metodologi adalah bahwa refactoring dilacak sebagai jenis "tugas" dan karenanya memiliki nomor masalah juga.
Scott McIntyre

@ScottMcIntyre Walaupun ini mungkin benar, saya tidak yakin itu ide yang bagus. Refactoring seringkali paling baik dilakukan secara oportunistik, atau sebagai bagian dari proses pengembangan kode yang bergantung pada kode yang akan di refactored. Seperti yang dikatakan Fowler , "Rencana refactoring adalah [...] tanda bahwa tim belum cukup melakukan refactoring menggunakan alur kerja lainnya". Atau lebih tepatnya oleh Ron Jeffries: Refactoring - Bukan di backlog! .
Jules

3

Saya melakukan hal semacam itu ketika saya melakukan mis perbaikan untuk cacat yang diperlukan perubahan ke beberapa file. Ini membuatnya sedikit lebih mudah untuk mengetahui apa yang sebenarnya berubah tanpa melihat file individual di changeset.

Untuk perubahan file tunggal, ini tidak perlu.

Baris pertama selalu merupakan deskripsi tingkat tinggi dari perubahan, seperti tautan ke cerita pengguna atau cacat.


3

Jika itu informasi yang relevan dalam narasi pesan komit, maka ya, sertakan. Jika satu-satunya informasi adalah nama file itu sendiri, maka tidak.

Misalnya, ini masuk akal: "Memindahkan fungsi build_foo () dari fooutil.c ke foobase.c, karena sebagian besar program yang ingin menggunakan build_foo () sudah termasuk foobase.c"

Yang ini tidak: "Memperbarui build_foo () di fooutil.c untuk mengambil parameter bar."


1

Saya ingin menambahkan perspektif yang berbeda di sini.

Jawaban saya Ya atau Tidak. Tetapi secara umum saya akan mengatakan Ya.

Kontrol versi memang cukup kuat untuk mengetahui file mana yang sedang diperbarui. Tapi, ketika kita melakukannya

$ git log

Kami hanya melihat pesan komit. Itulah yang dilakukan kebanyakan orang.

Dengan melihat ke dalam log itu sendiri. Itu menambah konteks tambahan untuk itu. Sebagai contoh:

readme.md: Fix typo detected by language tool

Lebih baik dari

Fix typo detected by language tool

Namun, jika perubahan menelurkan banyak file, maka setidaknya sebutkan komponen yang sedang diedit.

API: Fix reset password not sent email to user

Dengan membacanya, kita tahu bahwa kesalahan yang diperbaiki adalah pada komponen API, dan mungkin di bawah direktori API di basis kode.

Namun kita bisa melakukannya

$ git show COMMIT_ID --name-only 

tetapi menambahkan lebih banyak langkah hanya untuk mendapatkan file.


0

Satu-satunya waktu saya bisa melihat ini menjadi berguna untuk checkin file tunggal adalah jika Anda telah membuat perubahan pada fungsi yang digunakan di banyak tempat dalam file dengan hasil bahwa diff berantakan. Bahkan kemudian saya akan menempatkan pelacak perubahan # dan deskripsi teks perubahan sederhana terlebih dahulu.


-1

Saya pikir pertanyaan sebenarnya di sini adalah seberapa terbatasnya lingkup komitmen Anda? Jika Anda menunggu untuk melakukan berbagai perubahan yang tidak terkait bersama dalam satu komit, maka Anda mungkin merasa perlu menentukan file apa yang diubah untuk tujuan apa.

Namun, jika Anda hanya membuat komit yang lebih sempit lebih sering, maka satu komit akan menjelaskan file mana yang dimodifikasi dan Anda bisa dengan mudah menggambarkan apa tujuan pesan itu.

Lebih banyak komitmen, lebih sering. Itulah cara Anda dapat menghindari begitu bertele-tele dalam pesan Anda.


-2

Seharusnya tidak

Setiap orang yang tertarik dapat melihat perubahan dalam sejarah

Ini juga tidak layak dalam sistem yang lebih besar karena banyak file mungkin dihasilkan secara otomatis

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.