Akshay Hegde wrote: > Hi Patrick, > > On 2025-04-07 09:42 +0200, Patrick Steinhardt wrote: >> Hi, >> >> this patch is a result from the discussion at [1]. Thanks! >> >> Patrick >> >> [1]: <Z-uLqQd7QHZq-tB7@xxxxxxxxx> > > Awesome, thanks for the patch! I applied it on top of git 2.49.0 and can > confirm completion scripts get auto-installed at their appropriate > locations under datadir. The datadir can also be customized by passing > in '-Ddatadir' to `meson setup` so it's pretty flexible. > > One thing of note is that the git completion script for zsh also depends > on the bash completion script. > > So if you use a non-standard install location like I do (I'm pretty > weird, I use macOS with a package manager I've written myself), you'll > get an error with the git completion not being able to find the bash > script. The fix is to tell zsh where the bash completion script is > located. This is also helpfully communicated in the completion script > for zsh: > > # You need git's bash completion script installed. By default bash-completion's > # location will be used (e.g. pkg-config --variable=completionsdir bash-completion). > # > # If your bash completion script is somewhere else, you can specify the > # location in your ~/.zshrc: > # > # zstyle ':completion:*:*:git:*' script ~/.git-completion.bash > > Adding the zstyle line to my ~/.zshrc made the completion script work > without issues. > > Most people won't run into this since if you have this installed in the > standard locations, it should just work, and the zsh script does have > logic to look for additional paths it may be under. I just wanted to > mention it for info. I wonder whether it is proper to install the completion scripts relative to git's $datadir by default. I think the default ought to use the pkg-config call to get the completionsdir variable, as the zsh completion script suggests. I am presuming that's something meson can do rather trivially, just as it would do to find the compile options for git's various build dependencies? I don't know if that becomes too messy to be worthwhile when determining whether git is being installed by a normal user in $HOME or by a privileged user in a system-wide prefix like /usr. (Or, perhaps more confusingly, in /usr/local, while the bash-completion bits are in /usr. /usr/local is one of the prefixes bash-completion uses by default, so that one would happen to work.) -- Todd