<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/command-list.txt, branch main</title>
<subtitle>Fork of git SCM with my patches.</subtitle>
<id>http://git.kilabit.info/git/atom?h=main</id>
<link rel='self' href='http://git.kilabit.info/git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/'/>
<updated>2026-01-13T13:41:17Z</updated>
<entry>
<title>builtin: add new "history" command</title>
<updated>2026-01-13T13:41:17Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2026-01-13T09:54:38Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=a675183d483cb106c076395936cd9e602ae94404'/>
<id>urn:sha1:a675183d483cb106c076395936cd9e602ae94404</id>
<content type='text'>
When rewriting history via git-rebase(1) there are a few very common use
cases:

  - The ordering of two commits should be reversed.

  - A commit should be split up into two commits.

  - A commit should be dropped from the history completely.

  - Multiple commits should be squashed into one.

  - Editing an existing commit that is not the tip of the current
    branch.

While these operations are all doable, it often feels needlessly kludgey
to do so by doing an interactive rebase, using the editor to say what
one wants, and then perform the actions. Also, some operations like
splitting up a commit into two are way more involved than that and
require a whole series of commands.

Rebases also do not update dependent branches. The use of stacked
branches has grown quite common with competing version control systems
like Jujutsu though, so it clearly is a need that users have. While
rebases _can_ serve this use case if one always works on the latest
stacked branch, it is somewhat awkward and very easy to get wrong.

Add a new "history" command to plug these gaps. This command will have
several different subcommands to imperatively rewrite history for common
use cases like the above.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'tc/last-modified'</title>
<updated>2025-09-08T21:54:35Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-09-08T21:54:35Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=95a8428323a573963c93ece8f875dd3cd25a1a11'/>
<id>urn:sha1:95a8428323a573963c93ece8f875dd3cd25a1a11</id>
<content type='text'>
A new command "git last-modified" has been added to show the closest
ancestor commit that touched each path.

* tc/last-modified:
  last-modified: use Bloom filters when available
  t/perf: add last-modified perf script
  last-modified: new subcommand to show when files were last modified
</content>
</entry>
<entry>
<title>last-modified: new subcommand to show when files were last modified</title>
<updated>2025-08-28T23:44:58Z</updated>
<author>
<name>Toon Claes</name>
<email>toon@iotcl.com</email>
</author>
<published>2025-08-05T09:33:56Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=32f74582bc298621a05ab5733810ff0300b69715'/>
<id>urn:sha1:32f74582bc298621a05ab5733810ff0300b69715</id>
<content type='text'>
Similar to git-blame(1), introduce a new subcommand
git-last-modified(1). This command shows the most recent modification to
paths in a tree. It does so by expanding the tree at a given commit,
taking note of the current state of each path, and then walking
backwards through history looking for commits where each path changed
into its final commit ID.

Based-on-patch-by: Jeff King &lt;peff@peff.net&gt;
Improved-by: Ævar Arnfjörð Bjarmason &lt;avarab@gmail.com&gt;
Signed-off-by: Toon Claes &lt;toon@iotcl.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>repo: declare the repo command</title>
<updated>2025-08-17T16:13:39Z</updated>
<author>
<name>Lucas Seiki Oshiro</name>
<email>lucasseikioshiro@gmail.com</email>
</author>
<published>2025-08-16T22:45:59Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=ab94bb80002a85b31124f9ece8ba3843f93f063c'/>
<id>urn:sha1:ab94bb80002a85b31124f9ece8ba3843f93f063c</id>
<content type='text'>
Currently, `git rev-parse` covers a wide range of functionality not
directly related to parsing revisions, as its name suggests. Over time,
many features like parsing datestrings, options, paths, and others
were added to it because there wasn't a more appropriate command
to place them.

Create a new Git command called `repo`. `git repo` will be the main
command for obtaining the information about a repository (such as
metadata and metrics).

Also declare a subcommand for `repo` called `info`. `git repo info`
will bring the functionality of retrieving repository-related
information currently returned by `rev-parse`.

Add the required documentation and build changes to enable usage of
this subcommand.

Helped-by: Phillip Wood &lt;phillip.wood@dunelm.org.uk&gt;
Helped-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Helped-by: Justin Tobler &lt;jltobler@gmail.com&gt;
Helped-by: Eric Sunshine &lt;sunshine@sunshineco.com&gt;
Mentored-by: Karthik Nayak &lt;karthik.188@gmail.com&gt;
Mentored-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Lucas Seiki Oshiro &lt;lucasseikioshiro@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>builtin: introduce diff-pairs command</title>
<updated>2025-03-03T16:17:47Z</updated>
<author>
<name>Justin Tobler</name>
<email>jltobler@gmail.com</email>
</author>
<published>2025-02-28T21:33:45Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=5bd10b2adcf3a080169574dd08c5529de81eecb1'/>
<id>urn:sha1:5bd10b2adcf3a080169574dd08c5529de81eecb1</id>
<content type='text'>
Through git-diff(1), a single diff can be generated from a pair of blob
revisions directly. Unfortunately, there is not a mechanism to compute
batches of specific file pair diffs in a single process. Such a feature
is particularly useful on the server-side where diffing between a large
set of changes is not feasible all at once due to timeout concerns.

To facilitate this, introduce git-diff-pairs(1) which acts as a backend
passing its NUL-terminated raw diff format input from stdin through diff
machinery to produce various forms of output such as patch or raw.

The raw format was originally designed as an interchange format and
represents the contents of the diff_queued_diff list making it possible
to break the diff pipeline into separate stages. For example,
git-diff-tree(1) can be used as a frontend to compute file pairs to
queue and feed its raw output to git-diff-pairs(1) to compute patches.
With this, batches of diffs can be progressively generated without
having to recompute renames or retrieve object context. Something like
the following:

	git diff-tree -r -z -M $old $new |
	git diff-pairs -p -z

should generate the same output as `git diff-tree -p -M`. Furthermore,
each line of raw diff formatted input can also be individually fed to a
separate git-diff-pairs(1) process and still produce the same output.

Based-on-patch-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Justin Tobler &lt;jltobler@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>backfill: add builtin boilerplate</title>
<updated>2025-02-04T00:12:41Z</updated>
<author>
<name>Derrick Stolee</name>
<email>derrickstolee@github.com</email>
</author>
<published>2025-02-03T17:11:03Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=a3f79e9abdbdb27308ac7e3d9e362bcc361cecdc'/>
<id>urn:sha1:a3f79e9abdbdb27308ac7e3d9e362bcc361cecdc</id>
<content type='text'>
In anticipation of implementing 'git backfill', populate the necessary files
with the boilerplate of a new builtin. Mark the builtin as experimental at
this time, allowing breaking changes in the near future, if necessary.

Signed-off-by: Derrick Stolee &lt;stolee@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>builtin/refs: new command to migrate ref storage formats</title>
<updated>2024-06-06T16:04:34Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2024-06-06T05:29:49Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=25a0023f28600102f54e7529c20da5928c3e9c75'/>
<id>urn:sha1:25a0023f28600102f54e7529c20da5928c3e9c75</id>
<content type='text'>
Introduce a new command that allows the user to migrate a repository
between ref storage formats. This new command is implemented as part of
a new git-refs(1) executable. This is due to two reasons:

  - There is no good place to put the migration logic in existing
    commands. git-maintenance(1) felt unwieldy, and git-pack-refs(1) is
    not the correct place to put it, either.

  - I had it in my mind to create a new low-level command for accessing
    refs for quite a while already. git-refs(1) is that command and can
    over time grow more functionality relating to refs. This should help
    discoverability by consolidating low-level access to refs into a
    single executable.

As mentioned in the preceding commit that introduces the ref storage
format migration logic, the new `git refs migrate` command still has a
bunch of restrictions. These restrictions are documented accordingly.

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>replay: introduce new builtin</title>
<updated>2023-11-26T01:10:48Z</updated>
<author>
<name>Elijah Newren</name>
<email>newren@gmail.com</email>
</author>
<published>2023-11-24T11:10:31Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=f920b0289ba3971451a1cd478baa1d4fddbb0a0b'/>
<id>urn:sha1:f920b0289ba3971451a1cd478baa1d4fddbb0a0b</id>
<content type='text'>
For now, this is just a rename from `t/helper/test-fast-rebase.c` into
`builtin/replay.c` with minimal changes to make it build appropriately.

Let's add a stub documentation and a stub test script though.

Subsequent commits will flesh out the capabilities of the new command
and make it a more standard regular builtin.

Helped-by: Johannes Schindelin &lt;Johannes.Schindelin@gmx.de&gt;
Co-authored-by: Christian Couder &lt;chriscool@tuxfamily.org&gt;
Signed-off-by: Elijah Newren &lt;newren@gmail.com&gt;
Signed-off-by: Christian Couder &lt;chriscool@tuxfamily.org&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>version: fix builtin linking &amp; documentation</title>
<updated>2022-09-20T00:28:25Z</updated>
<author>
<name>Victoria Dye</name>
<email>vdye@github.com</email>
</author>
<published>2022-09-20T00:19:55Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=9b1dc1c9d879368b6cfccb183f5fc19facb1d9df'/>
<id>urn:sha1:9b1dc1c9d879368b6cfccb183f5fc19facb1d9df</id>
<content type='text'>
Like most builtins, 'version' is documented in a corresponding
'Documentation/git-version.txt' and can be invoked with 'git version'.
However, the 'check-docs' Makefile target showed that it was "removed but
documented: git-version." This was cause by the fact that it is not built as
a standalone 'git-version' executable, therefore appearing "removed" to
'check-docs'.

Without a precedent for documented builtins that aren't built into an
executable *or* any clear reason why a standalone 'git-version' shouldn't
exist, the 'check-docs' error appears to correctly identify an issue. To
correct that mismatch, add 'git-version' to the 'BUILT_INS' list in the root
Makefile (indicating that the 'cmd_version()' function appears in a file
that is *not* 'builtin/version.c'). Additionally, to avoid the "no link"
message in 'check-docs', list 'git-version' as an "ancilliaryinterrogator"
(like 'git help') in 'command-list.txt'.

Signed-off-by: Victoria Dye &lt;vdye@github.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>diagnose: add to command-list.txt</title>
<updated>2022-09-20T00:27:26Z</updated>
<author>
<name>Victoria Dye</name>
<email>vdye@github.com</email>
</author>
<published>2022-09-20T00:19:54Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=89c8048855e7193988a7991ad01af0c6d8cf9226'/>
<id>urn:sha1:89c8048855e7193988a7991ad01af0c6d8cf9226</id>
<content type='text'>
Add 'git diagnose' as an "ancilliaryinterrogator" (like 'git bugreport') to
'command-list.txt' in order to have it show up in 'git help -a' and avoid
the "no link" warning message from the 'check-docs' Makefile target.

Signed-off-by: Victoria Dye &lt;vdye@github.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
