Git fork

whatchanged: hint about git-log(1) and aliasing

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>

authored by

Kristoffer Haugsbakk and committed by
Junio C Hamano
5a312527 098230f7

+24 -8
+5 -1
Documentation/git-whatchanged.adoc
··· 24 24 25 25 New users are encouraged to use linkgit:git-log[1] instead. The 26 26 `whatchanged` command is essentially the same as linkgit:git-log[1] 27 - but defaults to showing the raw format diff output and skipping merges. 27 + but defaults to showing the raw format diff output and skipping merges: 28 + 29 + ---- 30 + git log --raw --no-merges 31 + ---- 28 32 29 33 The command is primarily kept for historical reasons; fingers of 30 34 many people who learned Git long before `git log` was invented by
+7 -1
builtin/log.c
··· 543 543 cmd_log_init(argc, argv, prefix, &rev, &opt, &cfg); 544 544 545 545 if (!cfg.i_still_use_this) 546 - you_still_use_that("git whatchanged"); 546 + you_still_use_that("git whatchanged", 547 + _("\n" 548 + "hint: You can replace 'git whatchanged <opts>' with:\n" 549 + "hint:\tgit log <opts> --raw --no-merges\n" 550 + "hint: Or make an alias:\n" 551 + "hint:\tgit config set --global alias.whatchanged 'log --raw --no-merges'\n" 552 + "\n")); 547 553 548 554 if (!rev.diffopt.output_format) 549 555 rev.diffopt.output_format = DIFF_FORMAT_RAW;
+1 -1
builtin/pack-redundant.c
··· 626 626 } 627 627 628 628 if (!i_still_use_this) 629 - you_still_use_that("git pack-redundant"); 629 + you_still_use_that("git pack-redundant", NULL); 630 630 631 631 if (load_all_packs) 632 632 load_all();
+1 -1
git-compat-util.h
··· 460 460 461 461 void show_usage_if_asked(int ac, const char **av, const char *err); 462 462 463 - NORETURN void you_still_use_that(const char *command_name); 463 + NORETURN void you_still_use_that(const char *command_name, const char *hint); 464 464 465 465 #ifndef NO_OPENSSL 466 466 #ifdef APPLE_COMMON_CRYPTO
+10 -4
usage.c
··· 376 376 va_end(ap); 377 377 } 378 378 379 - NORETURN void you_still_use_that(const char *command_name) 379 + 380 + NORETURN void you_still_use_that(const char *command_name, const char *hint) 380 381 { 381 382 struct strbuf percent_encoded = STRBUF_INIT; 382 383 strbuf_add_percentencode(&percent_encoded, ··· 384 385 STRBUF_ENCODE_SLASH); 385 386 386 387 fprintf(stderr, 387 - _("'%s' is nominated for removal.\n" 388 - "If you still use this command, here's what you can do:\n" 388 + _("'%s' is nominated for removal.\n"), command_name); 389 + 390 + if (hint) 391 + fputs(hint, stderr); 392 + 393 + fprintf(stderr, 394 + _("If you still use this command, here's what you can do:\n" 389 395 "\n" 390 396 "- read https://git-scm.com/docs/BreakingChanges.html\n" 391 397 "- check if anyone has discussed this on the mailing\n" ··· 395 401 " know that you still use this command and were unable\n" 396 402 " to determine a suitable replacement\n" 397 403 "\n"), 398 - command_name, percent_encoded.buf); 404 + percent_encoded.buf); 399 405 strbuf_release(&percent_encoded); 400 406 die(_("refusing to run without --i-still-use-this")); 401 407 }