"Sibo Dong via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > From: Sibo Dong <sibo.dong@xxxxxxxxxxx> > > Other variables like `key` and `value` are local to this completion > script, so I think the same should be done with `option`. > > Signed-off-by: Sibo Dong <sibo.dong@xxxxxxxxxxx> > --- > git-prompt.sh: make option a local variable > > This is very trivial, but variables like key and value are local to > git-prompt.sh, so I think the same should be done with option. That explains why we might consider localizing option; another thing to consider is if it is safe to just blindly localize it. Here is how I would explain and justify the change, if I were writing it: git-prompt.sh: localize `option` in __git_ps1_show_upstream The variable 'option' is used in __git_ps1_show_upstream() without being localized. This clobbers the variable the user may be using for other purposes, which is bad. Luckily, $option is not used to carry information around in the script as a global variable. The use of it in this script has very limited scope (namely, only inside this function), so just declare that it is "local". following the usual pattern: - start with the observation on the codebase before your change, - explain what the problem is with the current state, - outline the solution and explain why it is the right thing to do, and - order the codebase to "be like so". > diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh > index 16260bab73..5116016d39 100644 > --- a/contrib/completion/git-prompt.sh > +++ b/contrib/completion/git-prompt.sh > @@ -137,6 +137,7 @@ __git_ps1_show_upstream () > done <<< "$output" > > # parse configuration values > + local option > for option in ${GIT_PS1_SHOWUPSTREAM}; do > case "$option" in > git|svn) upstream="$option" ;; Looks OK to me.