1
0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-09-28 15:01:21 +02:00

44961: vcs_info svn: Fix infinite loop when /.svn exists.

This commit is contained in:
Daniel Shahaf 2019-12-01 00:04:48 +00:00
parent ce950dd4b4
commit 9e771a0b20
2 changed files with 10 additions and 5 deletions

@ -1,5 +1,8 @@
2019-12-03 Daniel Shahaf <danielsh@apache.org>
* 44961: Functions/VCS_Info/Backends/VCS_INFO_get_data_svn:
vcs_info svn: Fix infinite loop when /.svn exists.
* 44962: Functions/VCS_Info/VCS_INFO_bydir_detect,
Functions/VCS_Info/vcs_info: vcs_info: Document internal function
and variable

@ -46,17 +46,19 @@ if (( ${+svninfo[Working_Copy_Root_Path]} )); then
${vcs_comm[cmd]} info --non-interactive -- "${svnbase}" | while IFS=: read a b; do svninfo[${a// /_}]="${b## #}"; done
else
# svn 1.0-1.6
while [[ -d "${svnbase}/../.svn" ]]; do
svnbase=${svnbase:P}
while [[ -d "${svnbase:h}/.svn" ]]; do
parentinfo=()
${vcs_comm[cmd]} info --non-interactive -- "${svnbase}/.." | while IFS=: read a b; do parentinfo[${a// /_}]="${b## #}"; done
${vcs_comm[cmd]} info --non-interactive -- "${svnbase:h}" | while IFS=: read a b; do parentinfo[${a// /_}]="${b## #}"; done
[[ ${parentinfo[Repository_UUID]} != ${svninfo[Repository_UUID]} ]] && break
svninfo=(${(kv)parentinfo})
svnbase="${svnbase}/.."
svnbase=${svnbase:h}
if [[ $svnbase == '/' ]]; then
break
fi
done
fi
svnbase=${svnbase:P}
rrn=${svnbase:t}
zstyle -s ":vcs_info:${vcs}:${usercontext}:${rrn}" branchformat svnbranch || svnbranch="%b:%r"
hook_com=( branch "${svninfo[URL]##*/}" revision "${cwdinfo[Revision]}" )