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

[PATCH v2] rev-list-options.txt: start a list for `show-pulls`

From
MÅMartin Ågren <martin.agren@gmail.com>
Date
May 25, 2020, 17:06 UTC
Message-ID
<20200525170607.8000-1-martin.agren@gmail.com>
In-Reply-To
<xmqqsgfx0z9k.fsf@gitster.c.googlers.com>
On Mon, 18 May 2020 at 22:22, Junio C Hamano <gitster@pobox.com> wrote:
Show 10 quoted lines
>
> Martin Ågren <martin.agren@gmail.com> writes:
>
> > I currently have the commit message below for my patch plus your fixup.
> > ...
>
> I've queued 1, 3, 4, 5, and 6 in the meantime.  Todd gave us a
> replacement for 2, which I also took.
>
> Thanks.
A long weekend offline passes and it's already a week later...

Here is my original patch 7/7 plus Stolee's fixup, with the rephrased commit message from upthread. I've tried to test it from all angles I can think of -- AsciiDoc/Asciidoctor, man/html, doc-diff, ... It should be low-risk and does avoid beginning ~20 paragraphs with a literal "+" in the rendered docs for this new option.

Martin

-- >8 -- The explanation of the `--show-pulls` option added in commit 8d049e182e ("revision: --show-pulls adds helpful merges", 2020-04-10) consists of several paragraphs and we use "+" throughout to tie them together in one long chain of list continuations. Only thing is, we're not in any kind of list, so these pluses end up being rendered literally.

The preceding few paragraphs describe `--ancestry-path` and there we *do* have a list, since we've started one with `--ancestry-path::`. In fact, we have several such lists for all the various history-simplifying options we're discussing earlier in this file.

Thus, we're missing a list both from a consistency point of view and from a practical rendering standpoint.

Let's start a list for `--show-pulls` where we start actually discussing the option, and keep the paragraphs preceding it out of that list. That is, drop all those pluses before the new list we're adding here.

Helped-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
---
 Documentation/rev-list-options.txt | 35 ++++++++++++++++--------------
 1 file changed, 19 insertions(+), 16 deletions(-)
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 04ad7dd36e..b01b2b6773 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -581,12 +581,12 @@ option does. Applied to the 'D..M' range, it results in:
 
 Before discussing another option, `--show-pulls`, we need to
 create a new example history.
-+
+
 A common problem users face when looking at simplified history is that a
 commit they know changed a file somehow does not appear in the file's
 simplified history. Let's demonstrate a new example and show how options
 such as `--full-history` and `--simplify-merges` works in that case:
-+
+
 -----------------------------------------------------------------------
 	  .-A---M-----C--N---O---P
 	 /     / \  \  \/   /   /
@@ -595,7 +595,7 @@ such as `--full-history` and `--simplify-merges` works in that case:
 	  \ /      /\        /
 	   `---X--'  `---Y--'
 -----------------------------------------------------------------------
-+
+
 For this example, suppose `I` created `file.txt` which was modified by
 `A`, `B`, and `X` in different ways. The single-parent commits `C`, `Z`,
 and `Y` do not change `file.txt`. The merge commit `M` was created by
@@ -607,19 +607,19 @@ the contents of `file.txt` at `X`. Hence, `R` is TREESAME to `X` but not
 contents of `file.txt` at `R`, so `N` is TREESAME to `R` but not `C`.
 The merge commits `O` and `P` are TREESAME to their first parents, but
 not to their second parents, `Z` and `Y` respectively.
-+
+
 When using the default mode, `N` and `R` both have a TREESAME parent, so
 those edges are walked and the others are ignored. The resulting history
 graph is:
-+
+
 -----------------------------------------------------------------------
 	I---X
 -----------------------------------------------------------------------
-+
+
 When using `--full-history`, Git walks every edge. This will discover
 the commits `A` and `B` and the merge `M`, but also will reveal the
 merge commits `O` and `P`. With parent rewriting, the resulting graph is:
-+
+
 -----------------------------------------------------------------------
 	  .-A---M--------N---O---P
 	 /     / \  \  \/   /   /
@@ -628,21 +628,21 @@ merge commits `O` and `P`. With parent rewriting, the resulting graph is:
 	  \ /      /\        /
 	   `---X--'  `------'
 -----------------------------------------------------------------------
-+
+
 Here, the merge commits `O` and `P` contribute extra noise, as they did
 not actually contribute a change to `file.txt`. They only merged a topic
 that was based on an older version of `file.txt`. This is a common
 issue in repositories using a workflow where many contributors work in
 parallel and merge their topic branches along a single trunk: manu
 unrelated merges appear in the `--full-history` results.
-+
+
 When using the `--simplify-merges` option, the commits `O` and `P`
 disappear from the results. This is because the rewritten second parents
 of `O` and `P` are reachable from their first parents. Those edges are
 removed and then the commits look like single-parent commits that are
 TREESAME to their parent. This also happens to the commit `N`, resulting
 in a history view as follows:
-+
+
 -----------------------------------------------------------------------
 	  .-A---M--.
 	 /     /    \
@@ -651,18 +651,18 @@ in a history view as follows:
 	  \ /      /
 	   `---X--'
 -----------------------------------------------------------------------
-+
+
 In this view, we see all of the important single-parent changes from
 `A`, `B`, and `X`. We also see the carefully-resolved merge `M` and the
 not-so-carefully-resolved merge `R`. This is usually enough information
 to determine why the commits `A` and `B` "disappeared" from history in
 the default view. However, there are a few issues with this approach.
-+
+
 The first issue is performance. Unlike any previous option, the
 `--simplify-merges` option requires walking the entire commit history
 before returning a single result. This can make the option difficult to
 use for very large repositories.
-+
+
 The second issue is one of auditing. When many contributors are working
 on the same repository, it is important which merge commits introduced
 a change into an important branch. The problematic merge `R` above is
@@ -671,10 +671,13 @@ important branch. Instead, the merge `N` was used to merge `R` and `X`
 into the important branch. This commit may have information about why
 the change `X` came to override the changes from `A` and `B` in its
 commit message.
+
+--show-pulls::
+	In addition to the commits shown in the default history, show
+	each merge commit that is not TREESAME to its first parent but
+	is TREESAME to a later parent.
 +
-The `--show-pulls` option helps with both of these issues by adding more
-merge commits to the history results. If a merge is not TREESAME to its
-first parent but is TREESAME to a later parent, then that merge is
+When a merge commit is included by `--show-pulls`, the merge is
 treated as if it "pulled" the change from another branch. When using
 `--show-pulls` on this example (and no other options) the resulting
 graph is:
-- 
2.27.0.rc0
Previous: Junio C HamanoNext: Derrick Stolee
Message 19 of 24 in “Documentation fixes for v2.27.0-rc0”
  1. 0/7 Documentation fixes for v2.27.0-rc0Martin Ågren, May 17, 2020
  2. 1/7 date-formats.txt: fix list continuationMartin Ågren, May 17, 2020
  3. 2/7 git-bugreport.txt: fix reference to strftime(3)Martin Ågren, May 17, 2020
  4. Eric SunshineMay 17, 2020
  5. Martin ÅgrenMay 17, 2020
  6. Jean-Noël AvilaMay 18, 2020
  7. Martin ÅgrenMay 18, 2020
  8. 3/7 git-commit-graph.txt: fix grammoMartin Ågren, May 17, 2020
  9. Derrick StoleeMay 18, 2020
  10. 4/7 git-commit-graph.txt: fix list renderingMartin Ågren, May 17, 2020
  11. 5/7 git-credential.txt: use list continuationMartin Ågren, May 17, 2020
  12. Carlo Marcelo Arenas BelónMay 18, 2020
  13. 6/7 git-sparse-checkout.txt: add missing 'Martin Ågren, May 17, 2020
  14. Derrick StoleeMay 18, 2020
  15. 7/7 rev-list-options.txtMartin Ågren, May 17, 2020
  16. Derrick StoleeMay 18, 2020
  17. Martin ÅgrenMay 18, 2020
  18. Junio C HamanoMay 18, 2020
  19. rev-list-options.txt: start a list for `show-pulls`Martin Ågren, May 25, 2020
  20. Derrick StoleeMay 26, 2020
  21. Martin ÅgrenMay 26, 2020
  22. Junio C HamanoMay 26, 2020
  23. Derrick StoleeMay 26, 2020
  24. Martin ÅgrenMay 26, 2020

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.