diff mbox series

[7/7] rev-list-options.txt

Message ID acfca5465e822eaa6f0ddf85a01f7855d3dfb7d1.1589739920.git.martin.agren@gmail.com (mailing list archive)
State New, archived
Headers show
Series Documentation fixes for v2.27.0-rc0 | expand

Commit Message

Martin Ågren May 17, 2020, 6:52 p.m. UTC
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::`. But
we don't have a similar list running here. We could tie all our
paragraphs from 8d049e182e to that list, but that doesn't make much
sense: We aim to describe another option entirely.

We could start a new list item:

 --show-pulls:
    Before discussing another option, `--show-pulls`, we need to
    create a new example history.
 +
    ...

That reads somewhat awkwardly to me. Not to mention that the chain of
paragraphs that follows is fairly long, introducing a new example
history and discussing it in quite some detail. Let's make this run
along without any kind of indentation. It effectively means that we're
treating "Before discussing..." as a paragraph on the same level as
"There is another simplification mode available:" which precedes the
`--ancestry-path::` list.

If we really want a `--show-pulls::` list somewhere, we could perhaps
let it begin around "The `--show-pulls` option helps with both of these
issues ..." further down. But for now, let's just focus on getting rid
of those literal pluses.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
---
 Documentation/rev-list-options.txt | 38 +++++++++++++++---------------
 1 file changed, 19 insertions(+), 19 deletions(-)

Comments

Derrick Stolee May 18, 2020, 2:57 p.m. UTC | #1
On 5/17/2020 2:52 PM, Martin Ågren wrote:
> 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::`. But
> we don't have a similar list running here. We could tie all our
> paragraphs from 8d049e182e to that list, but that doesn't make much
> sense: We aim to describe another option entirely.
> 
> We could start a new list item:
> 
>  --show-pulls:
>     Before discussing another option, `--show-pulls`, we need to
>     create a new example history.
>  +
>     ...
> 
> That reads somewhat awkwardly to me. Not to mention that the chain of
> paragraphs that follows is fairly long, introducing a new example
> history and discussing it in quite some detail. Let's make this run
> along without any kind of indentation. It effectively means that we're
> treating "Before discussing..." as a paragraph on the same level as
> "There is another simplification mode available:" which precedes the
> `--ancestry-path::` list.
> 
> If we really want a `--show-pulls::` list somewhere, we could perhaps
> let it begin around "The `--show-pulls` option helps with both of these
> issues ..." further down. But for now, let's just focus on getting rid
> of those literal pluses.

I think the way you adjusted the preamble is good. It matches this prior
work before --ancestry-path:

	Finally, there is a fifth simplification mode available:

	--ancestry-path::
		(description)
	+
	(example)
	+
	...

And you're right, we do drop the "--show-pulls::" itemization. Will that
make it hard to link to that exact option? Probably.

What about the fixup below, to create this list item?

Thanks,
-Stolee

-- >8 --

From 6416bbc14fbdb21868c6f3b609f66e5fe5607265 Mon Sep 17 00:00:00 2001
From: Derrick Stolee <dstolee@microsoft.com>
Date: Mon, 18 May 2020 10:55:59 -0400
Subject: [PATCH] fixup! rev-list-options.txt

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
---
 Documentation/rev-list-options.txt | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 48e37e2456..b01b2b6773 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -672,25 +672,28 @@ 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.
 
-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
+--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.
++
+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:
-
++
 -----------------------------------------------------------------------
 	I---X---R---N
 -----------------------------------------------------------------------
-
++
 Here, the merge commits `R` and `N` are included because they pulled
 the commits `X` and `R` into the base branch, respectively. These
 merges are the reason the commits `A` and `B` do not appear in the
 default history.
-
++
 When `--show-pulls` is paired with `--simplify-merges`, the
 graph includes all of the necessary information:
-
++
 -----------------------------------------------------------------------
 	  .-A---M--.   N
 	 /     /    \ /
@@ -699,7 +702,7 @@ graph includes all of the necessary information:
 	  \ /      /
 	   `---X--'
 -----------------------------------------------------------------------
-
++
 Notice that since `M` is reachable from `R`, the edge from `N` to `M`
 was simplified away. However, `N` still appears in the history as an
 important commit because it "pulled" the change `R` into the main
Martin Ågren May 18, 2020, 6:37 p.m. UTC | #2
Hi Stolee,

(I realize now that the subject/oneliner of this patch is completely
broken. Hmpf.)

On Mon, 18 May 2020 at 16:57, Derrick Stolee <stolee@gmail.com> wrote:
>
> On 5/17/2020 2:52 PM, Martin Ågren wrote:
> > If we really want a `--show-pulls::` list somewhere, we could perhaps
> > let it begin around "The `--show-pulls` option helps with both of these
> > issues ..." further down. But for now, let's just focus on getting rid
> > of those literal pluses.
>
> I think the way you adjusted the preamble is good. It matches this prior
> work before --ancestry-path:
>
>         Finally, there is a fifth simplification mode available:
>
>         --ancestry-path::
>                 (description)
>         +
>         (example)
>         +
>         ...
>
> And you're right, we do drop the "--show-pulls::" itemization. Will that
> make it hard to link to that exact option? Probably.
>
> What about the fixup below, to create this list item?

I considered creating the list item, but like you, I figured it required
more surgery to the text than I felt like pursuing. Thanks for making a
concrete suggestion.

> -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
> +--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.
> ++
> +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:

I currently have the commit message below for my patch plus your fixup.

Thanks,
Martin

    rev-list-options.txt: start a list for `show-pulls`

    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>
Junio C Hamano May 18, 2020, 8:22 p.m. UTC | #3
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.
diff mbox series

Patch

diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 04ad7dd36e..48e37e2456 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,26 +671,26 @@  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.
-+
+
 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
 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:
-+
+
 -----------------------------------------------------------------------
 	I---X---R---N
 -----------------------------------------------------------------------
-+
+
 Here, the merge commits `R` and `N` are included because they pulled
 the commits `X` and `R` into the base branch, respectively. These
 merges are the reason the commits `A` and `B` do not appear in the
 default history.
-+
+
 When `--show-pulls` is paired with `--simplify-merges`, the
 graph includes all of the necessary information:
-+
+
 -----------------------------------------------------------------------
 	  .-A---M--.   N
 	 /     /    \ /
@@ -699,7 +699,7 @@  graph includes all of the necessary information:
 	  \ /      /
 	   `---X--'
 -----------------------------------------------------------------------
-+
+
 Notice that since `M` is reachable from `R`, the edge from `N` to `M`
 was simplified away. However, `N` still appears in the history as an
 important commit because it "pulled" the change `R` into the main