SZEDER Gábor <szeder@xxxxxxxxxx> writes: > On Tue, Sep 25, 2012 at 12:31:19AM -0400, Jeff King wrote: >> Yeah, doing "git checkout jk/<tab>" is not working at all, and I noticed >> the buggy commit is on the maint track, but has not yet been released. >> I'm not sure of the solution, but I think we should do this in the >> meantime: >> >> -- >8 -- >> Subject: Revert "completion: fix shell expansion of items" > > I agree with the revert, too. > > I looked into this issue, but quickly got lost in quoting-escaping > hell. Ideally we could do some quoting in __gitcomp_nl(), so it would > work for all kinds of input, but I couldn't come up with anything > working. Alternatively, we could modify __gitcomp_nl()'s callers, or > rather the helper functions supplying input to __gitcomp_nl() to do > the quoting or escaping themselves. Actually, that's quite easy for > local refs, at least, because for-each-ref's builtin quoting support > does the trick: > > diff --git a/contrib/completion/git-completion.bash > b/contrib/completion/git-completion.bash > index c48cd19f..3dc1ec8c 100644 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -313,7 +313,7 @@ __git_refs () > refs="refs/tags refs/heads refs/remotes" > ;; > esac > - git --git-dir="$dir" for-each-ref --format="%($format)" \ > + git --git-dir="$dir" for-each-ref --shell --format="%($format)" \ > $refs > if [ -n "$track" ]; then > # employ the heuristic used by git checkout > > With this change completion of local refs works well, even in the > presence of branches ${foo.bar} and foo'bar. > > Unfortunately, there are many callsites for __gitcomp_nl(), and it is > invoked with refs from remote repos, heads, tags, refspecs, remotes, > config variables, symbols from ctags, or output from stash or > ls-tree... although some of these are OK as they are now (remotes, > config variables). Whatever you do, please make the first step of that endeavour an addition to the t/t9902 to prevent the same breakage from happening again. Thanks. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html