From cd5c53ca606aa45bd23dda5d1aebb268c408334e Mon Sep 17 00:00:00 2001 From: xelxebar Date: Mon, 12 Nov 2018 03:28:38 +0000 Subject: [PATCH] --- ...h_completion_of_filenames_with_spaces.mdwn | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 doc/bugs/Bash_completion_of_filenames_with_spaces.mdwn diff --git a/doc/bugs/Bash_completion_of_filenames_with_spaces.mdwn b/doc/bugs/Bash_completion_of_filenames_with_spaces.mdwn new file mode 100644 index 0000000000..8b24e4c497 --- /dev/null +++ b/doc/bugs/Bash_completion_of_filenames_with_spaces.mdwn @@ -0,0 +1,53 @@ +### 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 # completes to 'foo bar.baz', as expected +$ git annex add 'foo # 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! +