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