summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-08-30 10:58:50 -0700
committerJunio C Hamano <gitster@pobox.com>2022-08-30 10:58:50 -0700
commit594d2d454755bedd85c5bcb9fb5dc59990592087 (patch)
tree0bd89a2d31c11cbb29323b46057b741ef26e7139
parent4155e41e0e67c0ac9309aa68dfc46bd49902ebd2 (diff)
downloadgit-htmldocs-594d2d454755bedd85c5bcb9fb5dc59990592087.tar.gz
Autogenerated HTML docs for v2.37.3-446-gd42b38
-rw-r--r--RelNotes/2.37.3.txt46
-rw-r--r--RelNotes/2.38.0.txt58
-rw-r--r--git-config.html10
-rw-r--r--git-log.html63
-rw-r--r--git-log.txt14
-rw-r--r--git-rev-list.html43
-rw-r--r--git-shortlog.html43
-rw-r--r--howto/coordinate-embargoed-releases.html2
-rw-r--r--howto/keep-canonical-history-correct.html2
-rw-r--r--howto/maintain-git.html2
-rw-r--r--howto/new-command.html2
-rw-r--r--howto/rebase-from-internal-branch.html2
-rw-r--r--howto/rebuild-from-update-hook.html2
-rw-r--r--howto/recover-corrupted-blob-object.html2
-rw-r--r--howto/recover-corrupted-object-harder.html2
-rw-r--r--howto/revert-a-faulty-merge.html2
-rw-r--r--howto/revert-branch-rebase.html2
-rw-r--r--howto/separating-topic-branches.html2
-rw-r--r--howto/setup-git-server-over-http.html2
-rw-r--r--howto/update-hook-example.html2
-rw-r--r--howto/use-git-daemon.html2
-rw-r--r--howto/using-merge-subtree.html2
-rw-r--r--howto/using-signed-tag-in-pull-request.html2
-rw-r--r--rev-list-options.txt46
-rw-r--r--technical/api-trace2.html45
-rw-r--r--technical/api-trace2.txt40
-rw-r--r--technical/scalar.txt17
27 files changed, 363 insertions, 94 deletions
diff --git a/RelNotes/2.37.3.txt b/RelNotes/2.37.3.txt
new file mode 100644
index 000000000..d66689e59
--- /dev/null
+++ b/RelNotes/2.37.3.txt
@@ -0,0 +1,46 @@
+Git 2.37.3 Release Notes
+========================
+
+This primarily is to backport various fixes accumulated on the 'master'
+front since 2.37.2.
+
+Fixes since v2.37.2
+-------------------
+
+ * The build procedure for Windows that uses CMake has been updated to
+ pick up the shell interpreter from local installation location.
+
+ * Conditionally allow building Python interpreter on Windows
+
+ * Fix to lstat() emulation on Windows.
+
+ * Older gcc with -Wall complains about the universal zero initializer
+ "struct s = { 0 };" idiom, which makes developers' lives
+ inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
+ build procedure has been tweaked to help these compilers.
+
+ * Plug memory leaks in the failure code path in the "merge-ort" merge
+ strategy backend.
+
+ * Avoid repeatedly running getconf to ask libc version in the test
+ suite, and instead just as it once per script.
+
+ * Platform-specific code that determines if a directory is OK to use
+ as a repository has been taught to report more details, especially
+ on Windows.
+
+ * "vimdiff3" regression has been corrected.
+
+ * "git fsck" reads mode from tree objects but canonicalizes the mode
+ before passing it to the logic to check object sanity, which has
+ hid broken tree objects from the checking logic. This has been
+ corrected, but to help exiting projects with broken tree objects
+ that they cannot fix retroactively, the severity of anomalies this
+ code detects has been demoted to "info" for now.
+
+ * Fixes to sparse index compatibility work for "reset" and "checkout"
+ commands.
+
+ * Documentation for "git add --renormalize" has been improved.
+
+Also contains other minor documentation updates and code clean-ups.
diff --git a/RelNotes/2.38.0.txt b/RelNotes/2.38.0.txt
index cd64c62b2..91a822e62 100644
--- a/RelNotes/2.38.0.txt
+++ b/RelNotes/2.38.0.txt
@@ -58,6 +58,20 @@ UI, Workflows & Features
material has been lifted from "scalar" and made into a feature of
"git bugreport".
+ * The namespaces used by "log --decorate" from "refs/" hierarchy by
+ default has been tightened.
+
+ * "git rev-list --ancestry-path=C A..B" is a natural extension of
+ "git rev-list A..B"; instead of choosing a subset of A..B to those
+ that have ancestry relationship with A, it lets a subset with
+ ancestry relationship with C.
+
+ * "scalar" now enables built-in fsmonitor on enlisted repositories,
+ when able.
+
+ * The bash prompt (in contrib/) learned to optionally indicate when
+ the index is unmerged.
+
Performance, Internal Implementation, Development Support etc.
@@ -122,6 +136,9 @@ Performance, Internal Implementation, Development Support etc.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
+ * Test portability improvements.
+ (merge 4d1d843be7 mt/rot13-in-c later to maint).
+
Fixes since v2.37
-----------------
@@ -155,11 +172,8 @@ Fixes since v2.37
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
- * Plug various memory leaks.
- (merge ece3974ba6 ab/leakfix later to maint).
-
- * Plug various memory leaks in test-tool commands.
- (merge f40a693450 ab/test-tool-leakfix later to maint).
+ * Plug various memory leaks, both in the main code and in test-tool
+ commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
@@ -218,45 +232,34 @@ Fixes since v2.37
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
- (merge 75707da4fa jr/gitweb-title-shortening later to maint).
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
- (merge 476e54b1c6 ca/unignore-local-installation-on-windows later to maint).
* Conditionally allow building Python interpreter on Windows
- (merge 2f0623aaa7 js/mingw-with-python later to maint).
* Fix to lstat() emulation on Windows.
- (merge 82ba1191ff js/lstat-mingw-enotdir-fix later to maint).
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
- (merge b53a5f2416 jk/struct-zero-init-with-older-gcc later to maint).
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
- (merge 1250dff32b js/ort-clean-up-after-failed-merge later to maint).
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
- (merge 04ede97211 lt/symbolic-ref-sanity later to maint).
- * A follow-up fix to a fix for a regression in 2.36.
- (merge 99ddc24672 ab/hooks-regression-fix later to maint).
+ * A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
- (merge a6a58f7801 pw/use-glibc-tunable-for-malloc-optim later to maint).
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
- (merge 3f7207e2ea js/safe-directory-plus later to maint).
* "vimdiff3" regression fix.
- (merge 34133d9658 fc/vimdiff-layout-vimdiff3-fix later to maint).
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
@@ -264,11 +267,9 @@ Fixes since v2.37
corrected, but to help exiting projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
- (merge 4dd3b045f5 jk/fsck-tree-mode-bits-fix later to maint).
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
- (merge b15207b8cf vd/sparse-reset-checkout-fixes later to maint).
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
@@ -279,6 +280,21 @@ Fixes since v2.37
reimplemented in C recently.
(merge 716c1f649e jk/pipe-command-nonblock later to maint).
+ * The sequencer machinery translated messages left in the reflog by
+ mistake, which has been corrected.
+
+ * xcalloc(), imitating calloc(), takes "number of elements of the
+ array", and "size of a single element", in this order. A call that
+ does not follow this ordering has been corrected.
+ (merge c4bbd9bb8f sg/xcalloc-cocci-fix later to maint).
+
+ * The preload-index codepath made copies of pathspec to give to
+ multiple threads, which were left leaked.
+ (merge 23578904da ad/preload-plug-memleak later to maint).
+
+ * Update the version of Ubuntu used for GitHub Actions CI from 18.04
+ to 22.04.
+ (merge ef46584831 ds/github-actions-use-newer-ubuntu later to maint).
+
* Other code cleanup, docfix, build fix, etc.
- (merge 94955d576b gc/git-reflog-doc-markup later to maint).
- (merge efae7ce692 po/doc-add-renormalize later to maint).
+ (merge 77b9e85c0f vd/fix-perf-tests later to maint). \ No newline at end of file
diff --git a/git-config.html b/git-config.html
index ffff83d69..4e69ece38 100644
--- a/git-config.html
+++ b/git-config.html
@@ -7604,6 +7604,16 @@ log.decorate
</p>
</dd>
<dt class="hdlist1">
+log.initialDecorationSet
+</dt>
+<dd>
+<p>
+ By default, <code>git log</code> only shows decorations for certain known ref
+ namespaces. If <em>all</em> is specified, then show all refs as
+ decorations.
+</p>
+</dd>
+<dt class="hdlist1">
log.excludeDecoration
</dt>
<dd>
diff --git a/git-log.html b/git-log.html
index 1ca56b6d5..8ab3c3000 100644
--- a/git-log.html
+++ b/git-log.html
@@ -837,14 +837,28 @@ each commit introduces are shown.</p></div>
</dt>
<dd>
<p>
- If no <code>--decorate-refs</code> is given, pretend as if all refs were
- included. For each candidate, do not use it for decoration if it
+ For each candidate reference, do not use it for decoration if it
matches any patterns given to <code>--decorate-refs-exclude</code> or if it
doesn&#8217;t match any of the patterns given to <code>--decorate-refs</code>. The
<code>log.excludeDecoration</code> config option allows excluding refs from
the decorations, but an explicit <code>--decorate-refs</code> pattern will
override a match in <code>log.excludeDecoration</code>.
</p>
+<div class="paragraph"><p>If none of these options or config settings are given, then references are
+used as decoration if they match <code>HEAD</code>, <code>refs/heads/</code>, <code>refs/remotes/</code>,
+<code>refs/stash/</code>, or <code>refs/tags/</code>.</p></div>
+</dd>
+<dt class="hdlist1">
+--clear-decorations
+</dt>
+<dd>
+<p>
+ When specified, this option clears all previous <code>--decorate-refs</code>
+ or <code>--decorate-refs-exclude</code> options and relaxes the default
+ decoration filter to include all references. This option is
+ assumed if the config value <code>log.initialDecorationSet</code> is set to
+ <code>all</code>.
+</p>
</dd>
<dt class="hdlist1">
--source
@@ -1601,15 +1615,17 @@ Default mode
</p>
</dd>
<dt class="hdlist1">
---ancestry-path
+--ancestry-path[=&lt;commit&gt;]
</dt>
<dd>
<p>
When given a range of commits to display (e.g. <em>commit1..commit2</em>
- or <em>commit2 &#94;commit1</em>), only display commits that exist
- directly on the ancestry chain between the <em>commit1</em> and
- <em>commit2</em>, i.e. commits that are both descendants of <em>commit1</em>,
- and ancestors of <em>commit2</em>.
+ or <em>commit2 &#94;commit1</em>), only display commits in that range
+ that are ancestors of &lt;commit&gt;, descendants of &lt;commit&gt;, or
+ &lt;commit&gt; itself. If no commit is specified, use <em>commit1</em> (the
+ excluded part of the range) as &lt;commit&gt;. Can be passed multiple
+ times; if so, a commit is included if it is any of the commits
+ given or if it is an ancestor or descendant of one of them.
</p>
</dd>
</dl></div>
@@ -1852,14 +1868,13 @@ If after this parent rewriting, <code>C'</code> is a root or merge commit (has
<div class="paragraph"><p>There is another simplification mode available:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
---ancestry-path
+--ancestry-path[=&lt;commit&gt;]
</dt>
<dd>
<p>
- Limit the displayed commits to those directly on the ancestry
- chain between the &#8220;from&#8221; and &#8220;to&#8221; commits in the given commit
- range. I.e. only display commits that are ancestor of the &#8220;to&#8221;
- commit and descendants of the &#8220;from&#8221; commit.
+ Limit the displayed commits to those which are an ancestor of
+ &lt;commit&gt;, or which are a descendant of &lt;commit&gt;, or are &lt;commit&gt;
+ itself.
</p>
<div class="paragraph"><p>As an example use case, consider the following commit history:</p></div>
<div class="listingblock">
@@ -1889,6 +1904,26 @@ option does. Applied to the <em>D..M</em> range, it results in:</p></div>
\
L--M</code></pre>
</div></div>
+<div class="paragraph"><p>We can also use <code>--ancestry-path=D</code> instead of <code>--ancestry-path</code> which
+means the same thing when applied to the <em>D..M</em> range but is just more
+explicit.</p></div>
+<div class="paragraph"><p>If we instead are interested in a given topic within this range, and all
+commits affected by that topic, we may only want to view the subset of
+<code>D..M</code> which contain that topic in their ancestry path. So, using
+<code>--ancestry-path=H D..M</code> for example would result in:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code> E
+ \
+ G---H---I---J
+ \
+ L--M</code></pre>
+</div></div>
+<div class="paragraph"><p>Whereas <code>--ancestry-path=K D..M</code> would result in</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code> K---------------L--M</code></pre>
+</div></div>
</dd>
</dl></div>
<div class="paragraph"><p>Before discussing another option, <code>--show-pulls</code>, we need to
@@ -1940,7 +1975,7 @@ merge commits <code>O</code> and <code>P</code>. With parent rewriting, the resu
not actually contribute a change to <code>file.txt</code>. They only merged a topic
that was based on an older version of <code>file.txt</code>. 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
+parallel and merge their topic branches along a single trunk: many
unrelated merges appear in the <code>--full-history</code> results.</p></div>
<div class="paragraph"><p>When using the <code>--simplify-merges</code> option, the commits <code>O</code> and <code>P</code>
disappear from the results. This is because the rewritten second parents
@@ -5384,7 +5419,7 @@ and overridden by the <code>--notes=&lt;ref&gt;</code> option.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2021-12-10 14:52:02 PST
+ 2022-08-30 10:56:31 PDT
</div>
</div>
</body>
diff --git a/git-log.txt b/git-log.txt
index 20e87cecf..b1285aee3 100644
--- a/git-log.txt
+++ b/git-log.txt
@@ -45,13 +45,23 @@ OPTIONS
--decorate-refs=<pattern>::
--decorate-refs-exclude=<pattern>::
- If no `--decorate-refs` is given, pretend as if all refs were
- included. For each candidate, do not use it for decoration if it
+ For each candidate reference, do not use it for decoration if it
matches any patterns given to `--decorate-refs-exclude` or if it
doesn't match any of the patterns given to `--decorate-refs`. The
`log.excludeDecoration` config option allows excluding refs from
the decorations, but an explicit `--decorate-refs` pattern will
override a match in `log.excludeDecoration`.
++
+If none of these options or config settings are given, then references are
+used as decoration if they match `HEAD`, `refs/heads/`, `refs/remotes/`,
+`refs/stash/`, or `refs/tags/`.
+
+--clear-decorations::
+ When specified, this option clears all previous `--decorate-refs`
+ or `--decorate-refs-exclude` options and relaxes the default
+ decoration filter to include all references. This option is
+ assumed if the config value `log.initialDecorationSet` is set to
+ `all`.
--source::
Print out the ref name given on the command line by which each
diff --git a/git-rev-list.html b/git-rev-list.html
index eebfdf3fd..ab8cc4c1a 100644
--- a/git-rev-list.html
+++ b/git-rev-list.html
@@ -1470,15 +1470,17 @@ Default mode
</p>
</dd>
<dt class="hdlist1">
---ancestry-path
+--ancestry-path[=&lt;commit&gt;]
</dt>
<dd>
<p>
When given a range of commits to display (e.g. <em>commit1..commit2</em>
- or <em>commit2 &#94;commit1</em>), only display commits that exist
- directly on the ancestry chain between the <em>commit1</em> and
- <em>commit2</em>, i.e. commits that are both descendants of <em>commit1</em>,
- and ancestors of <em>commit2</em>.
+ or <em>commit2 &#94;commit1</em>), only display commits in that range
+ that are ancestors of &lt;commit&gt;, descendants of &lt;commit&gt;, or
+ &lt;commit&gt; itself. If no commit is specified, use <em>commit1</em> (the
+ excluded part of the range) as &lt;commit&gt;. Can be passed multiple
+ times; if so, a commit is included if it is any of the commits
+ given or if it is an ancestor or descendant of one of them.
</p>
</dd>
</dl></div>
@@ -1721,14 +1723,13 @@ If after this parent rewriting, <code>C'</code> is a root or merge commit (has
<div class="paragraph"><p>There is another simplification mode available:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
---ancestry-path
+--ancestry-path[=&lt;commit&gt;]
</dt>
<dd>
<p>
- Limit the displayed commits to those directly on the ancestry
- chain between the &#8220;from&#8221; and &#8220;to&#8221; commits in the given commit
- range. I.e. only display commits that are ancestor of the &#8220;to&#8221;
- commit and descendants of the &#8220;from&#8221; commit.
+ Limit the displayed commits to those which are an ancestor of
+ &lt;commit&gt;, or which are a descendant of &lt;commit&gt;, or are &lt;commit&gt;
+ itself.
</p>
<div class="paragraph"><p>As an example use case, consider the following commit history:</p></div>
<div class="listingblock">
@@ -1758,6 +1759,26 @@ option does. Applied to the <em>D..M</em> range, it results in:</p></div>
\
L--M</code></pre>
</div></div>
+<div class="paragraph"><p>We can also use <code>--ancestry-path=D</code> instead of <code>--ancestry-path</code> which
+means the same thing when applied to the <em>D..M</em> range but is just more
+explicit.</p></div>
+<div class="paragraph"><p>If we instead are interested in a given topic within this range, and all
+commits affected by that topic, we may only want to view the subset of
+<code>D..M</code> which contain that topic in their ancestry path. So, using
+<code>--ancestry-path=H D..M</code> for example would result in:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code> E
+ \
+ G---H---I---J
+ \
+ L--M</code></pre>
+</div></div>
+<div class="paragraph"><p>Whereas <code>--ancestry-path=K D..M</code> would result in</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code> K---------------L--M</code></pre>
+</div></div>
</dd>
</dl></div>
<div class="paragraph"><p>Before discussing another option, <code>--show-pulls</code>, we need to
@@ -1809,7 +1830,7 @@ merge commits <code>O</code> and <code>P</code>. With parent rewriting, the resu
not actually contribute a change to <code>file.txt</code>. They only merged a topic
that was based on an older version of <code>file.txt</code>. 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
+parallel and merge their topic branches along a single trunk: many
unrelated merges appear in the <code>--full-history</code> results.</p></div>
<div class="paragraph"><p>When using the <code>--simplify-merges</code> option, the commits <code>O</code> and <code>P</code>
disappear from the results. This is because the rewritten second parents
diff --git a/git-shortlog.html b/git-shortlog.html
index 3b1a0f627..bb7d55410 100644
--- a/git-shortlog.html
+++ b/git-shortlog.html
@@ -1537,15 +1537,17 @@ Default mode
</p>
</dd>
<dt class="hdlist1">
---ancestry-path
+--ancestry-path[=&lt;commit&gt;]
</dt>
<dd>
<p>
When given a range of commits to display (e.g. <em>commit1..commit2</em>
- or <em>commit2 &#94;commit1</em>), only display commits that exist
- directly on the ancestry chain between the <em>commit1</em> and
- <em>commit2</em>, i.e. commits that are both descendants of <em>commit1</em>,
- and ancestors of <em>commit2</em>.
+ or <em>commit2 &#94;commit1</em>), only display commits in that range
+ that are ancestors of &lt;commit&gt;, descendants of &lt;commit&gt;, or
+ &lt;commit&gt; itself. If no commit is specified, use <em>commit1</em> (the
+ excluded part of the range) as &lt;commit&gt;. Can be passed multiple
+ times; if so, a commit is included if it is any of the commits
+ given or if it is an ancestor or descendant of one of them.
</p>
</dd>
</dl></div>
@@ -1788,14 +1790,13 @@ If after this parent rewriting, <code>C'</code> is a root or merge commit (has
<div class="paragraph"><p>There is another simplification mode available:</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
---ancestry-path
+--ancestry-path[=&lt;commit&gt;]
</dt>
<dd>
<p>
- Limit the displayed commits to those directly on the ancestry
- chain between the &#8220;from&#8221; and &#8220;to&#8221; commits in the given commit
- range. I.e. only display commits that are ancestor of the &#8220;to&#8221;
- commit and descendants of the &#8220;from&#8221; commit.
+ Limit the displayed commits to those which are an ancestor of
+ &lt;commit&gt;, or which are a descendant of &lt;commit&gt;, or are &lt;commit&gt;
+ itself.
</p>
<div class="paragraph"><p>As an example use case, consider the following commit history:</p></div>
<div class="listingblock">
@@ -1825,6 +1826,26 @@ option does. Applied to the <em>D..M</em> range, it results in:</p></div>
\
L--M</code></pre>
</div></div>
+<div class="paragraph"><p>We can also use <code>--ancestry-path=D</code> instead of <code>--ancestry-path</code> which
+means the same thing when applied to the <em>D..M</em> range but is just more
+explicit.</p></div>
+<div class="paragraph"><p>If we instead are interested in a given topic within this range, and all
+commits affected by that topic, we may only want to view the subset of
+<code>D..M</code> which contain that topic in their ancestry path. So, using
+<code>--ancestry-path=H D..M</code> for example would result in:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code> E
+ \
+ G---H---I---J
+ \
+ L--M</code></pre>
+</div></div>
+<div class="paragraph"><p>Whereas <code>--ancestry-path=K D..M</code> would result in</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code> K---------------L--M</code></pre>
+</div></div>
</dd>
</dl></div>
<div class="paragraph"><p>Before discussing another option, <code>--show-pulls</code>, we need to
@@ -1876,7 +1897,7 @@ merge commits <code>O</code> and <code>P</code>. With parent rewriting, the resu
not actually contribute a change to <code>file.txt</code>. They only merged a topic
that was based on an older version of <code>file.txt</code>. 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
+parallel and merge their topic branches along a single trunk: many
unrelated merges appear in the <code>--full-history</code> results.</p></div>
<div class="paragraph"><p>When using the <code>--simplify-merges</code> option, the commits <code>O</code> and <code>P</code>
disappear from the results. This is because the rewritten second parents
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html
index 369a5906b..b4337f4b7 100644
--- a/howto/coordinate-embargoed-releases.html
+++ b/howto/coordinate-embargoed-releases.html
@@ -873,7 +873,7 @@ Thanks,
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:38 PDT
+ 2022-08-30 10:57:08 PDT
</div>
</div>
</body>
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html
index a5dae93ee..8600c1bdf 100644
--- a/howto/keep-canonical-history-correct.html
+++ b/howto/keep-canonical-history-correct.html
@@ -938,7 +938,7 @@ tip of your <em>master</em> again and redo the two merges:</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:08 PDT
</div>
</div>
</body>
diff --git a/howto/maintain-git.html b/howto/maintain-git.html
index 6d9046281..b6df4659a 100644
--- a/howto/maintain-git.html
+++ b/howto/maintain-git.html
@@ -1469,7 +1469,7 @@ $ git update-ref -d $mf/ai/topic</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:08 PDT
</div>
</div>
</body>
diff --git a/howto/new-command.html b/howto/new-command.html
index 16c5d4654..37b77f7f5 100644
--- a/howto/new-command.html
+++ b/howto/new-command.html
@@ -863,7 +863,7 @@ letter [PATCH 0/n].
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:35 PDT
+ 2022-08-30 10:57:05 PDT
</div>
</div>
</body>
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html
index c4e38cc0e..6ea17efca 100644
--- a/howto/rebase-from-internal-branch.html
+++ b/howto/rebase-from-internal-branch.html
@@ -895,7 +895,7 @@ the #1' commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:08 PDT
</div>
</div>
</body>
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html
index 95e4b8bb9..e8b516939 100644
--- a/howto/rebuild-from-update-hook.html
+++ b/howto/rebuild-from-update-hook.html
@@ -847,7 +847,7 @@ This is still crude and does not protect against simultaneous
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:08 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html
index c5ac1a2a9..ed56a5d84 100644
--- a/howto/recover-corrupted-blob-object.html
+++ b/howto/recover-corrupted-blob-object.html
@@ -880,7 +880,7 @@ thing.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:07 PDT
</div>
</div>
</body>
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html
index 7288e0882..002f766f0 100644
--- a/howto/recover-corrupted-object-harder.html
+++ b/howto/recover-corrupted-object-harder.html
@@ -1189,7 +1189,7 @@ int main(int argc, char **argv)
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:07 PDT
</div>
</div>
</body>
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html
index a29203ddb..2f54d7d21 100644
--- a/howto/revert-a-faulty-merge.html
+++ b/howto/revert-a-faulty-merge.html
@@ -1025,7 +1025,7 @@ P---o---o---M---x---x---W---x---M2
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:07 PDT
</div>
</div>
</body>
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html
index 52237d1d2..359bb9d99 100644
--- a/howto/revert-branch-rebase.html
+++ b/howto/revert-branch-rebase.html
@@ -907,7 +907,7 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:35 PDT
+ 2022-08-30 10:57:06 PDT
</div>
</div>
</body>
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html
index adbf4d694..c4250ae9a 100644
--- a/howto/separating-topic-branches.html
+++ b/howto/separating-topic-branches.html
@@ -841,7 +841,7 @@ o---o"master"</code></pre>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:37 PDT
+ 2022-08-30 10:57:07 PDT
</div>
</div>
</body>
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html
index 5b3b6e0c7..92fed788d 100644
--- a/howto/setup-git-server-over-http.html
+++ b/howto/setup-git-server-over-http.html
@@ -1071,7 +1071,7 @@ help diagnosing the problem, but removes security checks.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:36 PDT
+ 2022-08-30 10:57:06 PDT
</div>
</div>
</body>
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html
index f309f2ea9..6e8259a12 100644
--- a/howto/update-hook-example.html
+++ b/howto/update-hook-example.html
@@ -930,7 +930,7 @@ that JC can make non-fast-forward pushes on it.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:36 PDT
+ 2022-08-30 10:57:06 PDT
</div>
</div>
</body>
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html
index 9cc6bf0d4..c40209fe2 100644
--- a/howto/use-git-daemon.html
+++ b/howto/use-git-daemon.html
@@ -791,7 +791,7 @@ a good practice to put the paths after a "--" separator.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:36 PDT
+ 2022-08-30 10:57:06 PDT
</div>
</div>
</body>
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html
index b4dda6267..d24558885 100644
--- a/howto/using-merge-subtree.html
+++ b/howto/using-merge-subtree.html
@@ -848,7 +848,7 @@ Please note that if the other project merges from you, then it will
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:36 PDT
+ 2022-08-30 10:57:06 PDT
</div>
</div>
</body>
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html
index 99597c406..e0f525b87 100644
--- a/howto/using-signed-tag-in-pull-request.html
+++ b/howto/using-signed-tag-in-pull-request.html
@@ -952,7 +952,7 @@ as part of the merge commit.</p></div>
<div id="footer">
<div id="footer-text">
Last updated
- 2022-08-25 15:15:36 PDT
+ 2022-08-30 10:57:06 PDT
</div>
</div>
</body>
diff --git a/rev-list-options.txt b/rev-list-options.txt
index bd08d1857..183750956 100644
--- a/rev-list-options.txt
+++ b/rev-list-options.txt
@@ -392,12 +392,14 @@ Default mode::
merges from the resulting history, as there are no selected
commits contributing to this merge.
---ancestry-path::
+--ancestry-path[=<commit>]::
When given a range of commits to display (e.g. 'commit1..commit2'
- or 'commit2 {caret}commit1'), only display commits that exist
- directly on the ancestry chain between the 'commit1' and
- 'commit2', i.e. commits that are both descendants of 'commit1',
- and ancestors of 'commit2'.
+ or 'commit2 {caret}commit1'), only display commits in that range
+ that are ancestors of <commit>, descendants of <commit>, or
+ <commit> itself. If no commit is specified, use 'commit1' (the
+ excluded part of the range) as <commit>. Can be passed multiple
+ times; if so, a commit is included if it is any of the commits
+ given or if it is an ancestor or descendant of one of them.
A more detailed explanation follows.
@@ -571,11 +573,10 @@ Note the major differences in `N`, `P`, and `Q` over `--full-history`:
There is another simplification mode available:
---ancestry-path::
- Limit the displayed commits to those directly on the ancestry
- chain between the ``from'' and ``to'' commits in the given commit
- range. I.e. only display commits that are ancestor of the ``to''
- commit and descendants of the ``from'' commit.
+--ancestry-path[=<commit>]::
+ Limit the displayed commits to those which are an ancestor of
+ <commit>, or which are a descendant of <commit>, or are <commit>
+ itself.
+
As an example use case, consider the following commit history:
+
@@ -607,6 +608,29 @@ option does. Applied to the 'D..M' range, it results in:
\
L--M
-----------------------------------------------------------------------
++
+We can also use `--ancestry-path=D` instead of `--ancestry-path` which
+means the same thing when applied to the 'D..M' range but is just more
+explicit.
++
+If we instead are interested in a given topic within this range, and all
+commits affected by that topic, we may only want to view the subset of
+`D..M` which contain that topic in their ancestry path. So, using
+`--ancestry-path=H D..M` for example would result in:
++
+-----------------------------------------------------------------------
+ E
+ \
+ G---H---I---J
+ \
+ L--M
+-----------------------------------------------------------------------
++
+Whereas `--ancestry-path=K D..M` would result in
++
+-----------------------------------------------------------------------
+ K---------------L--M
+-----------------------------------------------------------------------
Before discussing another option, `--show-pulls`, we need to
create a new example history.
@@ -662,7 +686,7 @@ 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
+parallel and merge their topic branches along a single trunk: many
unrelated merges appear in the `--full-history` results.
When using the `--simplify-merges` option, the commits `O` and `P`
diff --git a/technical/api-trace2.html b/technical/api-trace2.html
index c28fe02c3..b04dcc5eb 100644
--- a/technical/api-trace2.html
+++ b/technical/api-trace2.html
@@ -1643,6 +1643,7 @@ not be compared to the child&#8217;s atexit times.</p></div>
<pre><code>{
"event":"def_param",
...
+ "scope":"global",
"param":"core.abbrev",
"value":"7"
}</code></pre>
@@ -2172,6 +2173,48 @@ at offset 508.</p></div>
<div class="paragraph"><p>This example also shows that thread names are assigned in a racy manner
as each thread starts and allocates TLS storage.</p></div>
</dd>
+<dt class="hdlist1">
+Config (def param) Events
+</dt>
+<dd>
+<p>
+ Dump "interesting" config values to trace2 log.
+</p>
+<div class="paragraph"><p>We can optionally emit configuration events, see
+<code>trace2.configparams</code> in <a href="../git-config.html">git-config(1)</a> for how to enable
+it.</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>$ git config --system color.ui never
+$ git config --global color.ui always
+$ git config --local color.ui auto
+$ git config --list --show-scope | grep 'color.ui'
+system color.ui=never
+global color.ui=always
+local color.ui=auto</code></pre>
+</div></div>
+<div class="paragraph"><p>Then, mark the config <code>color.ui</code> as "interesting" config with
+<code>GIT_TRACE2_CONFIG_PARAMS</code>:</p></div>
+<div class="listingblock">
+<div class="content">
+<pre><code>$ export GIT_TRACE2_PERF_BRIEF=1
+$ export GIT_TRACE2_PERF=~/log.perf
+$ export GIT_TRACE2_CONFIG_PARAMS=color.ui
+$ git version
+...
+$ cat ~/log.perf
+d0 | main | version | | | | | ...
+d0 | main | start | | 0.001642 | | | /usr/local/bin/git version
+d0 | main | cmd_name | | | | | version (version)
+d0 | main | def_param | | | | scope:system | color.ui:never
+d0 | main | def_param | | | | scope:global | color.ui:always
+d0 | main | def_param | | | | scope:local | color.ui:auto
+d0 | main | data | r0 | 0.002100 | 0.002100 | fsync | fsync/writeout-only:0
+d0 | main | data | r0 | 0.002126 | 0.002126 | fsync | fsync/hardware-flush:0
+d0 | main | exit | | 0.000470 | | | code:0
+d0 | main | atexit | | 0.000477 | | | code:0</code></pre>
+</div></div>
+</dd>
</dl></div>
</div>
</div>
@@ -2216,7 +2259,7 @@ Trace2 targets (and convert &lt;key&gt; to a "category").
<div id="footer">
<div id="footer-text">
Last updated
- 2022-06-10 15:52:52 PDT
+ 2022-08-30 10:56:31 PDT
</div>
</div>
</body>
diff --git a/technical/api-trace2.txt b/technical/api-trace2.txt
index 77a150b30..2afa28bb5 100644
--- a/technical/api-trace2.txt
+++ b/technical/api-trace2.txt
@@ -717,6 +717,7 @@ The "exec_id" field is a command-unique id and is only useful if the
{
"event":"def_param",
...
+ "scope":"global",
"param":"core.abbrev",
"value":"7"
}
@@ -1207,6 +1208,45 @@ at offset 508.
This example also shows that thread names are assigned in a racy manner
as each thread starts and allocates TLS storage.
+Config (def param) Events::
+
+ Dump "interesting" config values to trace2 log.
++
+We can optionally emit configuration events, see
+`trace2.configparams` in linkgit:git-config[1] for how to enable
+it.
++
+----------------
+$ git config --system color.ui never
+$ git config --global color.ui always
+$ git config --local color.ui auto
+$ git config --list --show-scope | grep 'color.ui'
+system color.ui=never
+global color.ui=always
+local color.ui=auto
+----------------
++
+Then, mark the config `color.ui` as "interesting" config with
+`GIT_TRACE2_CONFIG_PARAMS`:
++
+----------------
+$ export GIT_TRACE2_PERF_BRIEF=1
+$ export GIT_TRACE2_PERF=~/log.perf
+$ export GIT_TRACE2_CONFIG_PARAMS=color.ui
+$ git version
+...
+$ cat ~/log.perf
+d0 | main | version | | | | | ...
+d0 | main | start | | 0.001642 | | | /usr/local/bin/git version
+d0 | main | cmd_name | | | | | version (version)
+d0 | main | def_param | | | | scope:system | color.ui:never
+d0 | main | def_param | | | | scope:global | color.ui:always
+d0 | main | def_param | | | | scope:local | color.ui:auto
+d0 | main | data | r0 | 0.002100 | 0.002100 | fsync | fsync/writeout-only:0
+d0 | main | data | r0 | 0.002126 | 0.002126 | fsync | fsync/hardware-flush:0
+d0 | main | exit | | 0.000470 | | | code:0
+d0 | main | atexit | | 0.000477 | | | code:0
+----------------
== Future Work
=== Relationship to the Existing Trace Api (api-trace.txt)
diff --git a/technical/scalar.txt b/technical/scalar.txt
index f6353375f..0600150b3 100644
--- a/technical/scalar.txt
+++ b/technical/scalar.txt
@@ -87,17 +87,20 @@ series have been accepted:
- `scalar-generalize-diagnose`: Move the functionality of `scalar diagnose`
into `git diagnose` and `git bugreport --diagnose`.
+- 'scalar-add-fsmonitor: Enable the built-in FSMonitor in Scalar
+ enlistments. At the end of this series, Scalar should be feature-complete
+ from the perspective of a user.
+
Roughly speaking (and subject to change), the following series are needed to
"finish" this initial version of Scalar:
-- Finish Scalar features: Enable the built-in FSMonitor in Scalar enlistments
- and implement `scalar help`. At the end of this series, Scalar should be
- feature-complete from the perspective of a user.
-
- Move Scalar to toplevel: Move Scalar out of `contrib/` and into the root of
- `git`, including updates to build and install it with the rest of Git. This
- change will incorporate Scalar into the Git CI and test framework, as well as
- expand regression and performance testing to ensure the tool is stable.
+ `git`. This includes a variety of related updates, including:
+ - building & installing Scalar in the Git root-level 'make [install]'.
+ - builing & testing Scalar as part of CI.
+ - moving and expanding test coverage of Scalar (including perf tests).
+ - implementing 'scalar help'/'git help scalar' to display scalar
+ documentation.
Finally, there are two additional patch series that exist in Microsoft's fork of
Git, but there is no current plan to upstream them. There are some interesting