@matheusbsbs / matheus-bagliano / commits / e0d7805954
Fork 0

completion: fix alias listings with newlines

Aliases with newlines have been a problem since commit 56fc25f (Bash completion support for remotes in .git/config., 2006-11-05). The chance of the problem occurring has been slim at best, until commit 518ef8f (completion: Replace config --list with --get-regexp, 2009-09-11) removed the case statement introduced by commit 56fc25f. Before removing the case statement, most aliases with newlines would work unless they were specially crafted as follows [alias] foo = "log -1 --pretty='format:%s\nalias.error=broken'" After removing the case statement, a more benign alias like [alias] whowhat = "log -1 --pretty='format:%an <%ae>\n%s'" wont-complete = ... would cause the completion to break badly. For now, revert the removal of the case statement until someone comes up with a better way to get keys from git-config. Signed-off-by: Stephen Boyd <bebarino@gmail.com> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Stephen Boyd committed Oct 8, 2009 at 23:21 UTC e0d78059540aab2e6ff720e7c940d7244cc12c18
1 file changed +6 -2
contrib/completion/git-completion.bash
+6 -2
@@ -602,8 +602,12 @@ __git_aliases ()
602 {
603 local i IFS=$'\n'
604 for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do
605 - i="${i#alias.}"
606 - echo "${i/ */}"
605 + case "$i" in
606 + alias.*)
607 + i="${i#alias.}"
608 + echo "${i/ */}"
609 + ;;
610 + esac
611 done
612 }
613