]> git.ipfire.org Git - thirdparty/git.git/commitdiff
whatchanged: hint about git-log(1) and aliasing
authorKristoffer Haugsbakk <code@khaugsbakk.name>
Wed, 17 Sep 2025 20:24:17 +0000 (22:24 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Sep 2025 20:47:24 +0000 (13:47 -0700)
There have been quite a few `--i-still-use-this` user reports since Git
2.51.0 was released.[1][2]  And it doesn’t seem like they are reading
the man page about the git-log(1) equivalent.

Tell them what options to plug into git-log(1), either as a replacement
command or as an alias.[3]  That template produces almost the same
output[4] and is arguably a plug-in replacement.  Concretely, add
an optional `hint` argument so that we can use it right after the
initial error line.

Also mention the same concrete options in the documentation while we’re
at it.

[1]: E.g.,
    • https://lore.kernel.org/git/e1a69dea-bcb6-45fc-83d3-9e50d32c410b@5y5.one/
    • https://lore.kernel.org/git/1011073f-9930-4360-a42f-71eb7421fe3f@chrispalmer.uk/#t
    • https://lore.kernel.org/git/9fcbfcc4-79f9-421f-b9a4-dc455f7db485@acm.org/#t
    • https://lore.kernel.org/git/83241BDE-1E0D-489A-9181-C608E9FCC17B@gmail.com/
[2]: The error message on 2.51.0 does tell them to report it, unconditionally
[3]: We allow aliasing deprecated builtins now for people who are very
    used to the command name or just like it a lot
[4]: You only get different outputs if you happen to have empty
     commits (no changes)[4]
[5]: https://lore.kernel.org/git/20250825085428.GA367101@coredump.intra.peff.net/

Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-whatchanged.adoc
builtin/log.c
builtin/pack-redundant.c
git-compat-util.h
usage.c

index d21484026fe805e2d9c13df807add9818a9989f6..e71d2aa2d27ea6c7ebcd32397e8f788603559cd1 100644 (file)
@@ -24,7 +24,11 @@ Shows commit logs and diff output each commit introduces.
 
 New users are encouraged to use linkgit:git-log[1] instead.  The
 `whatchanged` command is essentially the same as linkgit:git-log[1]
-but defaults to showing the raw format diff output and skipping merges.
+but defaults to showing the raw format diff output and skipping merges:
+
+----
+git log --raw --no-merges
+----
 
 The command is primarily kept for historical reasons; fingers of
 many people who learned Git long before `git log` was invented by
index c2f8bbf86301a9bd092258fb8d051d39f642bc83..1d1e6e9130a7ed5ea5120e36cdd19a0d998f15c0 100644 (file)
@@ -543,7 +543,13 @@ int cmd_whatchanged(int argc,
        cmd_log_init(argc, argv, prefix, &rev, &opt, &cfg);
 
        if (!cfg.i_still_use_this)
-               you_still_use_that("git whatchanged");
+               you_still_use_that("git whatchanged",
+                                  _("\n"
+                                    "hint: You can replace 'git whatchanged <opts>' with:\n"
+                                    "hint:\tgit log <opts> --raw --no-merges\n"
+                                    "hint: Or make an alias:\n"
+                                    "hint:\tgit config set --global alias.whatchanged 'log --raw --no-merges'\n"
+                                    "\n"));
 
        if (!rev.diffopt.output_format)
                rev.diffopt.output_format = DIFF_FORMAT_RAW;
index fe81c293e3af6f6b1db03c8e27b5283af8c7d3fe..5d5ae4afa28f50c0a43eaf517a4e2f6288b7548c 100644 (file)
@@ -626,7 +626,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, s
        }
 
        if (!i_still_use_this)
-               you_still_use_that("git pack-redundant");
+               you_still_use_that("git pack-redundant", NULL);
 
        if (load_all_packs)
                load_all();
index 9408f463e31b5195a6aba1c4f099f9e88de5f9fe..398e0fac4fab6007903fdd9fd31dcc28fe531a65 100644 (file)
@@ -460,7 +460,7 @@ void warning_errno(const char *err, ...) __attribute__((format (printf, 1, 2)));
 
 void show_usage_if_asked(int ac, const char **av, const char *err);
 
-NORETURN void you_still_use_that(const char *command_name);
+NORETURN void you_still_use_that(const char *command_name, const char *hint);
 
 #ifndef NO_OPENSSL
 #ifdef APPLE_COMMON_CRYPTO
diff --git a/usage.c b/usage.c
index 35dc57eb07ef8ea7e53a66678cfa40f7748e91e0..7545a61645344952830713c9418d85bec6940f79 100644 (file)
--- a/usage.c
+++ b/usage.c
@@ -376,7 +376,8 @@ void bug_fl(const char *file, int line, const char *fmt, ...)
        va_end(ap);
 }
 
-NORETURN void you_still_use_that(const char *command_name)
+
+NORETURN void you_still_use_that(const char *command_name, const char *hint)
 {
        struct strbuf percent_encoded = STRBUF_INIT;
        strbuf_add_percentencode(&percent_encoded,
@@ -384,8 +385,13 @@ NORETURN void you_still_use_that(const char *command_name)
                                 STRBUF_ENCODE_SLASH);
 
        fprintf(stderr,
-               _("'%s' is nominated for removal.\n"
-                 "If you still use this command, here's what you can do:\n"
+               _("'%s' is nominated for removal.\n"), command_name);
+
+       if (hint)
+               fputs(hint, stderr);
+
+       fprintf(stderr,
+               _("If you still use this command, here's what you can do:\n"
                  "\n"
                  "- read https://git-scm.com/docs/BreakingChanges.html\n"
                  "- check if anyone has discussed this on the mailing\n"
@@ -395,7 +401,7 @@ NORETURN void you_still_use_that(const char *command_name)
                  "  know that you still use this command and were unable\n"
                  "  to determine a suitable replacement\n"
                  "\n"),
-               command_name, percent_encoded.buf);
+               percent_encoded.buf);
        strbuf_release(&percent_encoded);
        die(_("refusing to run without --i-still-use-this"));
 }