git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/6] SubmittingPatches: clarify expected structure of commit log message

From
WYWeijie Yuan <wy@wyuan.org>
Date
Jul 12, 2026, 14:49 UTC
Message-ID
<alOplirhJxIkpDYh@wyuan.org>
In-Reply-To
<20260711192650.2417665-2-gitster@pobox.com>
On Sat, Jul 11, 2026 at 12:26:45PM -0700, Junio C Hamano wrote:
> The current text on log message has lots of justification and
> rationale before telling contributors what exactly is expected of
> them.
Nit: s/message/messages/ ?
> Simplify the rationale section and jump straight to what to write
> and how.
> [...]
Show 64 quoted lines
> +Reviewers will evaluate your commit message for clarity and structure.
> +A well-structured commit message typically follows a three-part flow:
> +**Observation**, **Solution**, and **Command**.
>  
> -. justifies the way the change solves the problem, i.e. why the
> -  result with the change is better.
> -
> -. alternate solutions considered but discarded, if any.
> +[[meaningful-message]]
> +==== Structure of a Commit Message
>  
> -. records the resolution of design or viability concerns raised by the
> -  community during the review, if any, ensuring the historical record
> -  explains why the chosen approach was accepted over alternatives.
> +0. **Title**:
> +   The first line of the commit log message is the title that lets
> +   readers of `git log --oneline` quickly understand what area the
> +   commit touches and what problem it addresses.
>  
> +1. **Observation (The Status Quo)**:
> +   Explain the problem you are trying to solve.  Describe what is
> +   wrong with the current code *without* your change.
> ++
>  [[present-tense]]
> -The problem statement that describes the status quo is written in the
> -present tense.  Write "The code does X when it is given input Y",
> -instead of "The code used to do Y when given input X".  You do not
> -have to say "Currently"---the status quo in the problem statement is
> -about the code _without_ your change, by project convention.
> -
> -[[imperative-mood]]
> -Describe your changes in imperative mood, e.g. "make xyzzy do frotz"
> -instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy
> -to do frotz", as if you are giving orders to the codebase to change
> -its behavior.  Try to make sure your explanation can be understood
> -without external resources. Instead of giving a URL to a mailing list
> -archive, summarize the relevant points of the discussion.
> +Write this problem statement in the **present tense** (e.g., "The
> +code does X when given input Y", not "The code used to do Y").  The
> +status quo in the problem statement is always about the code without
> +your change, by project convention.  Do not use words like
> +"Currently" to describe this state.
> +
> +2. **Solution (The Approach)**:
> +   Justify the way your change solves the problem.  Explain why the
> +   proposed approach is better and mention any alternate solutions
> +   considered and discarded.
> ++
> +If your change only addresses a subset of a larger problem (e.g.,
> +handles directories but not files because of characteristic Y),
> +explain this limitation.  This helps future developers understand the
> +boundaries of your work and whether it can be safely extended.
> ++
> +If the change resolves design or viability concerns raised by the
> +community during prior review rounds, ensure the message records the
> +resolution, explaining why the chosen approach was accepted over
> +alternatives.
> +
> +3. **Command (The Instruction)**:
> +   [[imperative-mood]]
> +   Command the codebase to change.  Write this in the **imperative
> +   mood** (e.g., "make xyzzy do frotz" instead of "This patch makes
> +   xyzzy do..." or "I changed xyzzy..."), as if you are giving orders
> +   to the codebase to change its behavior.

Stopped and confused for a moment. I am not sure that "Command" belongs alongside "Observation" and "Solution" as a third part of the message. Sometimes the command still describes the solution. In other words, Solution and Command seem not to be logically completely separable.

> +#### Formatting and Style Guidelines
Perhaps using "====" here would be in harmony with the existing content.
Show 19 quoted lines
> +* **The Subject Line (First Line)**:
> +  * Keep it short (50 characters is the soft limit).
> +  * Skip the full stop at the end.
> +  * Prefix the subject with the modified area followed by a colon
> +    and a space (e.g., "area: subject").  The area is typically a
> +    filename or identifier (e.g., `doc:`, `transport:`, `t5601:`).
> +    Run `git log --no-merges` on target files to see conventions.
> +  * [[summary-section]]
> +    Do not capitalize the first word after the "area:" prefix unless
> +    there is a specific reason (e.g., `HEAD` is always in caps).
> +    E.g., use "doc: clarify...", not "doc: Clarify...".
> +
> +* **The Body**:
> +  * Explain the *why* rather than repeating the *what* of the diff.
> +  * Try to make the explanation self-contained.  Avoid relying on
> +    external URLs (like mailing list archives) as the sole
> +    explanation; summarize the relevant points of the discussion
> +    instead.
> +  * Wrap lines to 68-72 columns.
MyFirstContribution:
  This commit message is intentionally formatted to 72 columns per line
Should we update both?

btw I don't know which editors/projects have the default setting of 68. Is it Emacs?

Thanks.
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 21 in “Update Contributor Guides”
  1. 0/6 Update Contributor GuidesJunio C Hamano, Jul 11, 2026
  2. 1/6 SubmittingPatches: clarify expected structure of commit log messageJunio C Hamano, Jul 11, 2026
  3. Weijie YuanJul 12, 2026
  4. Junio C HamanoJul 12, 2026
  5. Weijie YuanJul 13, 2026
  6. Michael MontalboJul 12, 2026
  7. Junio C HamanoJul 13, 2026
  8. Weijie YuanJul 13, 2026
  9. D. Ben KnobleJul 14, 2026
  10. Weijie YuanJul 17, 2026
  11. 2/6 MyFirstContribution: what if I don't get a reply?Junio C Hamano, Jul 11, 2026
  12. Patrick SteinhardtJul 17, 2026
  13. Junio C HamanoJul 17, 2026
  14. 3/6 MyFirstContribution: carrying over trailersJunio C Hamano, Jul 11, 2026
  15. 4/6 MyFirstContribution: clarify that 'seen' does not mean acceptanceJunio C Hamano, Jul 11, 2026
  16. Matt HunterJul 12, 2026
  17. Junio C HamanoJul 12, 2026
  18. 5/6 SubmittingPatches: clarify the meaning of "Will queue"Junio C Hamano, Jul 11, 2026
  19. 6/6 SubmittingPatches: clarify the writing style of whats-cookingJunio C Hamano, Jul 11, 2026
  20. Michael MontalboJul 12, 2026
  21. Junio C HamanoJul 13, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.