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

[PATCH v2] rerere-train: two fixes to the use of "git show -s"

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 27, 2022, 22:09 UTC
Message-ID
<20220227220924.2144325-1-gitster@pobox.com>
In-Reply-To
<xmqqsfsjuw8m.fsf@gitster.g>

The script uses "git show -s" to display the title of the merge commit being studied, without explicitly disabling the pager, which is not a safe thing to do in a script.

For example, when the pager is set to "less" with "-SF" options (-S tells the pager not to fold lines but allow horizontal scrolling to show the overly long lines, -F tells the pager not to wait if the output in its entirety is shown on a single page), and the title of the merge commit is longer than the width of the terminal, the pager will wait until the end-user tells it to quit after showing the single line.

Explicitly disable the pager with this "git show" invocation to fix this.

The command uses the "--pretty=format:..." format, which adds LF in between each pair of commits it outputs, which means that the label for the merge being learned from will be followed by the next message on the same line. "--pretty=tformat:..." is what we should instead, which adds LF after each commit, or a more modern way to spell it, i.e. "--format=...". This existing breakage becomes easier to see, now we no longer use the pager.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 * Relative to the initial version, the "--no-merges" change has
   been removed because the end user can still give --merges from
   the command line and the filtering of merges done by the script
   is still needed for correctness.
 contrib/rerere-train.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contrib/rerere-train.sh b/contrib/rerere-train.sh
index 75125d6ae0..26b724c8c6 100755
--- a/contrib/rerere-train.sh
+++ b/contrib/rerere-train.sh
@@ -86,7 +86,7 @@ do
 	fi
 	if test -s "$GIT_DIR/MERGE_RR"
 	then
-		git show -s --pretty=format:"Learning from %h %s" "$commit"
+		git --no-pager show -s --format="Learning from %h %s" "$commit"
 		git rerere
 		git checkout -q $commit -- .
 		git rerere
-- 
2.35.1-354-g715d08a9e5
Previous: Junio C HamanoNext: Johannes Altmanninger
Message 7 of 8 in “rerere-train: modernise a bit”
  1. rerere-train: modernise a bitJunio C Hamano, Feb 16, 2022
  2. Derrick StoleeFeb 20, 2022
  3. Johannes AltmanningerFeb 27, 2022
  4. Re* [PATCH] rerere-train: modernise a bitJunio C Hamano, Feb 27, 2022
  5. Johannes AltmanningerFeb 27, 2022
  6. Junio C HamanoFeb 27, 2022
  7. rerere-train: two fixes to the use of "git show -s"Junio C Hamano, Feb 27, 2022
  8. Johannes AltmanningerFeb 28, 2022

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.