5ce078da92
Fix bash completion of "git annex" to propertly handle files with spaces and other problem characters. (Completion of "git-annex" already did.) This commit was sponsored by Jake Vosloo on Patreon.
54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
### Please describe the problem.
|
|
|
|
When using tab-completion for git-annex subcommands, filenames with spaces (or other special characters) are not correctly handled.
|
|
|
|
### What steps will reproduce the problem?
|
|
|
|
[[!format sh """
|
|
$ touch 'foo bar.baz'
|
|
$ git annex 'foo<tab> # completes to 'foo bar.baz', as expected
|
|
$ git annex add 'foo<tab> # presents the following (incorrect) options
|
|
bar.baz foo
|
|
"""]]
|
|
|
|
### What version of git-annex are you using? On what operating system?
|
|
|
|
[[!format sh """
|
|
$ git annex version
|
|
git-annex version: 6.20180719
|
|
build flags: Assistant Webapp Pairing S3(multipartupload)(storageclasses) WebDAV Inotify ConcurrentOutput Feeds Testsuite
|
|
dependency versions: aws-0.20 bloomfilter-2.0.1.0 cryptonite-0.25 DAV-1.3.2 feed-1.0.0.0 ghc-8.4.3 http-client-0.5.13.1 persistent-sqlite-2.8.1.2 uuid-1.3.13 yesod-1.6.0
|
|
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384
|
|
SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384
|
|
BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL
|
|
remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar hook external
|
|
operating system: linux x86_64
|
|
supported repository versions: 3 5 6
|
|
upgrade supported from repository versions: 0 1 2 3 4 5
|
|
"""]]
|
|
|
|
### Please provide any additional information below.
|
|
|
|
This is a one-line patch that *somewhat* fixes the issue:
|
|
|
|
[[!format sh """
|
|
--- a/bash-completion.bash
|
|
+++ b/bash-completion.bash
|
|
@@ -20,6 +20,7 @@ complete -o bashdefault -o default -o filenames -F _git-annex git-annex
|
|
_git_annex() {
|
|
local cmdline
|
|
CMDLINE=(--bash-completion-index $(($COMP_CWORD - 1)))
|
|
+ local IFS=$'\n'
|
|
|
|
local seen_g`
|
|
"""]]
|
|
|
|
I've certainly not tested this thoroughly, but the problem demonstrated above is fixed, and a cursory check of other commands seems to behave as expected.
|
|
|
|
However, it doesn't correctly handle escape characters. Typically, a filename completion escapes special characters as needed, taking into account quoting rules if necessary. This one line patch doesn't seem to do that and completes to names with raw spaces.
|
|
|
|
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
|
|
|
|
Many times over! I use git-annex to manage my hundreds of pdfs, images, video files etc! It essentially enables *exactly* the work flow I like, since I live in the command line and appreciate fine-grained control over my tools. So, yes, thank you very much for this excellent too!
|
|
|
|
> [[fixed|done]] --[[Joey]]
|