MestreLion/git-tools

Add bash completion scripts

Chairn opened this issue · 2 comments

Chairn commented

Hello,

It would be nice to have bash auto complete either files or command just like any other git commands. I tried to look at git-completions, but it's hard to understand how it works.

By default, on Debian 12, "git rest" autocomplete to "git restore " and not "git restore" which means we have to backtrack one character (the space after restore) and then type "-mtime" manually. Afterwards, no completion occurs, neither for files nor for options.

I don't know if it's easily doable.
Thanks

There are 2 "tiers" of bash-completion for git: the easy one, that simply completes the subcommand, so git rest<TAB> expands to git restore-mtime. And the tricky one, that autocompletes arguments based on current subcommand.

The former already works, provided you've installed git-restore-mtime anywhere in your $PATH. git itself does that for all available subcommands, nothing required on my part.

The latter would require actual implementation on my part, it's in my TO-DO list but I don't believe I'll do it in the near (or even mid) future.

However, I know there are tools to auto-generate bash-completions based on --help output, and some for Python scripts that use argparse (as is the case of git-restore-mtime that are even more accurate than --help parsing. This way anyone can have bash-completions for any command without any intervention or support on the command's part. This could be a workaround until someone PR an actual support.

Btw, it seems git restore is a new, experimental command, which I don't have here. Maybe its existence is messing with git's own subcommand completion mechanism?