From be1e9c189d3791ab740bfd6901a904528c9362a7 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 19 Nov 2009 09:48:42 +0000 Subject: Greg: 27416: repository path enhancement --- ChangeLog | 7 ++++++- Completion/Unix/Command/_subversion | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1b93f3d94..3022b6a19 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-11-19 Peter Stephenson + + * Greg: 27416: Completion/Unix/Command/_subversion: repository + path enhancement. + 2009-11-17 Peter Stephenson * unposted: Completion/Unix/Command/_perforce: improve @@ -12354,5 +12359,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.4815 $ +* $Revision: 1.4816 $ ***************************************************** diff --git a/Completion/Unix/Command/_subversion b/Completion/Unix/Command/_subversion index 9d6babed5..2dbcb6d65 100644 --- a/Completion/Unix/Command/_subversion +++ b/Completion/Unix/Command/_subversion @@ -2,6 +2,7 @@ _svn () { local curcontext="$curcontext" state line expl ret=1 + typeset -A opt_args _arguments -C \ '(-)--help[print help information]' \ @@ -207,12 +208,20 @@ _svn_status() { (( $+functions[_svn_remote_paths] )) || _svn_remote_paths() { - local expl remfiles remdispf remdispd suf ret=1 + local expl remfiles remdispf remdispd suf ret=1 pfx='\^/' sub='^/' + + # prefix must match a valid repository path format, either standard style + # schema://host/path/.. or ^/path/.. specifying a path relative to the + # root of the working directory repository. In the second form, allow the + # leading '^' be escaped in case the user has the extendedglob option set. + [[ -prefix *://*/ ]] || + [[ -f .svn/entries && ( -prefix '^/' || -prefix '\^/' ) ]] || + return 1 - [[ -prefix *://*/ ]] || return 1 + # return if remote access is not permitted zstyle -T ":completion:${curcontext}:" remote-access || return 1 - remfiles=( ${(f)"$(svn list $IPREFIX${PREFIX%%[^./][^/]#} 2>/dev/null)"} ) + remfiles=( ${(f)"$(svn list $IPREFIX${${PREFIX%%[^/]#}/#$pfx/$sub} 2>/dev/null)"} ) (( $? == 0 )) || return 1 # you might consider trying to return early if $#remfiles is zero, -- cgit 1.4.1