From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23950 invoked by alias); 23 Dec 2011 14:52:17 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 30046 Received: (qmail 21586 invoked from network); 23 Dec 2011 14:52:14 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 Received-SPF: none (ns1.primenet.com.au: domain at bewatermyfriend.org does not designate permitted sender hosts) From: Frank Terbeck To: Subject: Re: Issue with vcs_info and zsh 4.3.14 In-Reply-To: <87mxb1zkcd.fsf@ft.bewatermyfriend.org> (Frank Terbeck's message of "Fri, 09 Dec 2011 19:11:14 +0100") References: <91f8bdbd8b04c960f177e97d58423a08@archlinux.de> <87mxb1zkcd.fsf@ft.bewatermyfriend.org> User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.91 (gnu/linux) Date: Fri, 23 Dec 2011 10:38:59 +0100 Message-ID: <87ehvvwrt8.fsf@ft.bewatermyfriend.org> MIME-Version: 1.0 Content-Type: text/plain X-Df-Sender: NDMwNDQ0 Frank Terbeck wrote: [...] > + if [[ "$a $b" == *E155007* ]] \ > + || [[ "$a $b" == *'is not a working copy'* ]] So... long time, no mail about this. I've discussed this a little more with Daniel on IRC. And it turns out, there would be more than one error to check for here. And I'm not going to do that. Instead, I want to check for the return code of calling "svn info" and bail out if that's non-zero. I wanted to do that with `$pipestatus[]', but I've stumbled across a rather severe issue with that (see workers-29973 for details). So, in the meantime, I'll commit patch included below. It contains the code I really want to use (commented out) and a clumsier approach using a temporary array `$dat[]'. As soon as the `pipestatus' issue is resolved, I'll be removing the workaround. But I'd like to get an svn-1.7 enabled vcs_info going. Regards, Frank diff --git a/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn b/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn index b1cb730..41cc3e7 100644 --- a/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn +++ b/Functions/VCS_Info/Backends/VCS_INFO_get_data_svn @@ -6,12 +6,28 @@ setopt localoptions noksharrays extendedglob NO_shwordsplit local svnbase svnbranch a b rrn +local -i rc local -A svninfo parentinfo local -xA hook_com svnbase="."; svninfo=() -${vcs_comm[cmd]} info --non-interactive | while IFS=: read a b; do svninfo[${a// /_}]="${b## #}"; done +# Unfortunately, `$pipestatus' is broken currently. Until that problem is +# resolved, here is a workaround that will get things done, without using it. +# Clumsily, but that's life. +local -a dat +dat=( ${(f)"$(${vcs_comm[cmd]} info --non-interactive 2>&1)"} ) +rc=$? +(( rc != 0 )) && return 1 +# The following line is the real code, the following is the workaround. +#${vcs_comm[cmd]} info --non-interactive \ +print -l "${dat[@]}" \ +|& while IFS=: read a b; do + svninfo[${a// /_}]="${b## #}" +done +#rc=${pipestatus[1]} +#(( rc != 0 )) && return 1 + while [[ -d "${svnbase}/../.svn" ]]; do parentinfo=() ${vcs_comm[cmd]} info --non-interactive "${svnbase}/.." | while IFS=: read a b; do parentinfo[${a// /_}]="${b## #}"; done