Git Mailing List Archive on lore.kernel.org
 help / color / Atom feed
From: "Martin Ågren" <martin.agren@gmail.com>
To: git@vger.kernel.org
Subject: [PATCH 7/7] rev-list-options.txt
Date: Sun, 17 May 2020 20:52:22 +0200
Message-ID: <acfca5465e822eaa6f0ddf85a01f7855d3dfb7d1.1589739920.git.martin.agren@gmail.com> (raw)
In-Reply-To: <cover.1589739920.git.martin.agren@gmail.com>

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(-)

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
-- 
2.27.0.rc0


  parent reply index

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-17 18:52 [PATCH 0/7] Documentation fixes for v2.27.0-rc0 Martin Ågren
2020-05-17 18:52 ` [PATCH 1/7] date-formats.txt: fix list continuation Martin Ågren
2020-05-17 18:52 ` [PATCH 2/7] git-bugreport.txt: fix reference to strftime(3) Martin Ågren
2020-05-17 19:23   ` Eric Sunshine
2020-05-17 19:27     ` Martin Ågren
2020-05-18 10:54       ` Jean-Noël Avila
2020-05-18 11:15         ` Martin Ågren
2020-05-17 18:52 ` [PATCH 3/7] git-commit-graph.txt: fix grammo Martin Ågren
2020-05-18 14:46   ` Derrick Stolee
2020-05-17 18:52 ` [PATCH 4/7] git-commit-graph.txt: fix list rendering Martin Ågren
2020-05-17 18:52 ` [PATCH 5/7] git-credential.txt: use list continuation Martin Ågren
2020-05-18 23:06   ` Carlo Marcelo Arenas Belón
2020-05-17 18:52 ` [PATCH 6/7] git-sparse-checkout.txt: add missing ' Martin Ågren
2020-05-18 14:46   ` Derrick Stolee
2020-05-17 18:52 ` Martin Ågren [this message]
2020-05-18 14:57   ` [PATCH 7/7] rev-list-options.txt Derrick Stolee
2020-05-18 18:37     ` Martin Ågren
2020-05-18 20:22       ` Junio C Hamano
2020-05-25 17:06         ` [PATCH v2] rev-list-options.txt: start a list for `show-pulls` Martin Ågren
2020-05-26 12:24           ` Derrick Stolee
2020-05-26 19:18             ` Martin Ågren
2020-05-26 15:16           ` Junio C Hamano
2020-05-26 17:01             ` Derrick Stolee
2020-05-26 19:20               ` Martin Ågren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=acfca5465e822eaa6f0ddf85a01f7855d3dfb7d1.1589739920.git.martin.agren@gmail.com \
    --to=martin.agren@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Mailing List Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/git/0 git/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 git git/ https://lore.kernel.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.git


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git