]> git.ipfire.org Git - thirdparty/git.git/commit
git: allow alias-shadowing deprecated builtins
authorKristoffer Haugsbakk <code@khaugsbakk.name>
Wed, 17 Sep 2025 20:24:14 +0000 (22:24 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Sep 2025 20:47:23 +0000 (13:47 -0700)
commitbf68b116997a0471dfccf7dcced00eb7d8b66982
treee3a6980ada16fad40a4d49c731f82d81787fc869
parentb4f9282d8db88619b2becac7f4ee2cad75a72ff9
git: allow alias-shadowing deprecated builtins

git-whatchanged(1) is deprecated and you need to pass
`--i-still-use-this` in order to force it to work as before.
There are two affected users, or usages:

1. people who use the command in scripts; and
2. people who are used to using it interactively.

For (1) the replacement is straightforward.[1]  But people in (2) might
like the name or be really used to typing it.[3]

An obvious first thought is to suggest aliasing `whatchanged` to the
git-log(1) equivalent.[1]  But this doesn’t work and is awkward since you
cannot shadow builtins via aliases.

Now you are left in an uncomfortable limbo; your alias won’t work until
the command is removed for good.

Let’s lift this limitation by allowing *deprecated* builtins to be
shadowed by aliases.

The only observed demand for aliasing has been for git-whatchanged(1),
not for git-pack-redundant(1).  But let’s be consistent and treat all
deprecated commands the same.

[1]:

        git log --raw --no-merges

     With a minor caveat: you get different outputs if you happen to
     have empty commits (no changes)[2]
[2]: https://lore.kernel.org/git/20250825085428.GA367101@coredump.intra.peff.net/
[3]: https://lore.kernel.org/git/BL3P221MB0449288C8B0FA448A227FD48833AA@BL3P221MB0449.NAMP221.PROD.OUTLOOK.COM/

Based-on-patch-by: Jeff King <peff@peff.net>
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/alias.adoc
git.c
t/t0014-alias.sh