git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git-jump: pick a mode automatically when invoked without arguments

From
Jeff King <peff@peff.net>
Date
May 8, 2026, 14:13 UTC
Message-ID
<20260508141314.GB709299@coredump.intra.peff.net>
In-Reply-To
<pull.2108.git.1778231254871.gitgitgadget@gmail.com>
On Fri, May 08, 2026 at 09:07:34AM +0000, Greg Hurrell via GitGitGadget wrote:
Show 19 quoted lines
> From: Greg Hurrell <greg.hurrell@datadoghq.com>
> 
> When `git jump` is invoked with no positional arguments (and no
> arguments after `--stdout`) it currently prints usage and exits with
> status 1.
> 
> But there are two situations where we can usefully infer the most
> valuable and likely mode that a user would want to use, and select it
> automatically when they run `git jump` without arguments:
> 
> 1. When there are unmerged paths in the index, the user likely
>    wants `git jump merge`.
> 
> 2. When the working tree has unstaged changes, the user likely
>    wants `git jump diff`.
> 
> Detect these two cases and dispatch to the corresponding mode
> automatically, falling back to the existing usage-and-exit behavior
> when neither holds.

OK, I guess this saves a little bit of typing. I never really thought about it because I long ago aliased the various invocations in my shell ("git jump diff" in particular is so useful that it is just "d" in my shell).

I'd be a little worried that it is more confusing to somebody approaching the command for the first time and just runs "git jump" to not see usage or other guidance. But that might be overly paranoid.

Would having "git jump auto" work for you? I.e., are you primarily trying to avoid the mental effort of selecting the command, or the finger effort of typing it?

Show 15 quoted lines
>  if test $# -lt 1; then
> -	usage >&2
> -	exit 1
> +	if test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" != "true"; then
> +		usage >&2
> +		exit 1
> +	fi
> +	if test -n "$(git ls-files -u)"; then
> +		set -- merge
> +	elif ! git diff --quiet; then
> +		set -- diff
> +	else
> +		usage >&2
> +		exit 1
> +	fi

The implementation looks reasonable. In theory we could save a diff invocation by trying diff mode and reporting whether it found anything. But the --quiet invocation is not too expensive, and avoiding it is probably not worth the gymnastics required.

-Peff
Previous: Greg Hurrell via GitGitGadgetNext: Greg Hurrell
Message 2 of 15 in “git-jump: pick a mode automatically when invoked without arguments”
  1. git-jump: pick a mode automatically when invoked without argumentsGreg Hurrell via GitGitGadget, May 8, 2026
  2. Jeff KingMay 8, 2026
  3. Greg HurrellMay 8, 2026
  4. Jeff KingMay 8, 2026
  5. Erik Cervin EdinMay 14, 2026
  6. Greg HurrellMay 19, 2026
  7. Jeff KingMay 19, 2026
  8. git-jump: pick a mode automatically when invoked without argumentsGreg Hurrell via GitGitGadget, May 20, 2026
  9. Junio C HamanoMay 21, 2026
  10. Junio C HamanoMay 21, 2026
  11. git-jump: pick a mode automatically when invoked without argumentsGreg Hurrell via GitGitGadget, May 21, 2026
  12. Junio C HamanoMay 21, 2026
  13. Jeff KingMay 22, 2026
  14. Greg HurrellMay 22, 2026
  15. Erik Cervin EdinMay 26, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.