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
EEErik Cervin Edin <erik@cervined.in>
Date
May 14, 2026, 15:40 UTC
Message-ID
<agXb1SXKnA69L9ak@mbp>
In-Reply-To
<20260508175240.GA737125@coredump.intra.peff.net>
On 26/05/08 04:30PM, Greg Hurrell wrote:
> Hopefully, they at least read the README before installing it from contrib/
> (although Homebrew recently starting installing it for folks automatically,
> so may not remain true for much longer on macOS...)

Oh! I didn't know that but looking closer on my homebrew installed Git, looks like you're right.

I would've assumed that if users had jumped through the hoops of installing git-jump from contrib/ it stands to reason they would have some sense of what it does. But if this is landing as a part of regular brew install git, I'd wager there's a few unsuspecting people running git-jump that don't know what it does.

> Would having "git jump auto" work for you?

Imo, this sounds ideal -- there's something odd about `git jump` picking the subcommand heuristically. At least when I invoke git-jump I always do so with a specific intent of _where_ I want to jump. Then again, I never do a jump merge or a jump ws.

> Homebrew installing `git-jump` by default a few months ago[^2] broke
> this, because aliases can't shadow builtin commands.

But it looks like this doesn't work in this case. Even if you have git-jump installed stand-alone (mine is in ~/bin/git-jump, in PATH, before /opt/homebrew/bin.)

FWIW I alias jump to j, jump diff to jd and jump grep to jg. E.g.
    git jd # git jump diff
On 26/05/08 09:07AM, Greg Hurrell via GitGitGadget wrote:
> -usage: git jump [--stdout] <mode> [<args>]
> +usage: git jump [--stdout] [<mode>] [<args>]

The usage message makes <mode> optional but doesn't explain what happens when you omit it. Seems worth documenting the auto-detect behavior there too.

Show 9 quoted lines
> 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`.

I can think of a third situation -- when there are staged changes flagged by git diff --cached --check.

If we're going to teach git-jump how to be more clever about where to jump, does it also make sense to bake `git jump ws` into this?

Also, if this is going to grow into a proper auto-detect heuristic, it might be cleaner as a first-class mode rather than logic spliced into the argument parser. Something like:

    mode_auto() {
        if test -n "$(git ls-files -u)"; then
            mode_merge "$@"
        elif ! git diff --quiet; then
            mode_diff "$@"
        elif ! git diff --cached --check >/dev/null 2>&1; then
            mode_ws --cached "$@"
        else
            return 0
        fi
    }

That way `git jump auto` works explicitly, bare `git jump` defaults to it (just `set -- auto` when $# -lt 1), and the usage text can document the heuristic. It also keeps the detection and dispatch in one place in case someone wants to tweak the priority later.

All in all, I think an auto jumping mode could be genuinely useful.
Previous: Jeff KingNext: Greg Hurrell
Message 5 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.