bash completion: Improve responsiveness of git-log completion
authorShawn O. Pearce <spearce@spearce.org>
Sun, 13 Jul 2008 02:37:42 +0000 (02:37 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 13 Jul 2008 18:36:04 +0000 (11:36 -0700)
commitab02dfe533f55535bdb66e05776a4081020322c6
tree09ccb8ff24605bbc2e27d9ee7a69d714400f73eb
parente09c4e753c337d914f4eb7a05cb5e8bbfc362489
bash completion: Improve responsiveness of git-log completion

Junio noticed the bash completion has been taking a long time lately.
Petr Baudis tracked it down to 72e5e989b ("bash: Add space after
unique command name is completed.").  Tracing the code showed
we spent significant time inside of this loop within __gitcomp,
due to the string copying overhead.

  [28.146109654] _git common over
  [28.164791148] gitrefs in
  [28.280302268] gitrefs dir out
  [28.300939737] gitcomp in
  [28.308378112] gitcomp pre-case
* [28.313407453] gitcomp iter in
* [28.701270296] gitcomp iter out
  [28.713370786] out normal

Since __git_refs avoids this string copying by forking and using
echo we use the same trick here when we need to finish generating
the names for the caller.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash