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>
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
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;
}
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();
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
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,
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"
" 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"));
}