about summary refs log tree commit diff
path: root/Functions
diff options
context:
space:
mode:
authorMarc Finet <m.dreadlock@gmail.com>2015-01-20 22:55:07 +0100
committerFrank Terbeck <ft@bewatermyfriend.org>2015-01-22 00:15:20 +0100
commit9ea817acdafc2f9c0377bb30d7931916bcd8bc6a (patch)
tree71200c8a6f420886dc0d4f2661e0f80db7b44b06 /Functions
parent102f2aec1e0dd31296a3bba5668b88d0113d2c80 (diff)
downloadzsh-9ea817acdafc2f9c0377bb30d7931916bcd8bc6a.tar.gz
zsh-9ea817acdafc2f9c0377bb30d7931916bcd8bc6a.tar.xz
zsh-9ea817acdafc2f9c0377bb30d7931916bcd8bc6a.zip
PATCH: 34333: vcs_info quilt: fix unapplied detection in subdir
When patches are applied, let quilt use .pc without forcing the
patch directory, this will fix the unapplied detection when being in
subdir.
When no patches are applied, use zstyle quilt-patch-dir then
QUILT_PATCHES then "patches" for path to search for patches.

Note: prefer setting quilt-patch-dir rather than QUILT_PATCHES for
absolute path because when patches are applied, quilt unapplied will
not return the correct list (i.e. the whole list rather that the one
specified by .pc/.quilt_series).
Diffstat (limited to 'Functions')
-rw-r--r--Functions/VCS_Info/VCS_INFO_quilt30
1 files changed, 17 insertions, 13 deletions
diff --git a/Functions/VCS_Info/VCS_INFO_quilt b/Functions/VCS_Info/VCS_INFO_quilt
index db15dda74..34ff1edbf 100644
--- a/Functions/VCS_Info/VCS_INFO_quilt
+++ b/Functions/VCS_Info/VCS_INFO_quilt
@@ -87,7 +87,7 @@ function VCS_INFO_quilt() {
     local patches pc tmp qstring root
     local -i ret
     local -x context
-    local -a applied unapplied all applied_string unapplied_string quiltcommand
+    local -a applied unapplied all applied_string unapplied_string quiltcommand quilt_env
     local -Ax hook_com
 
     context=":vcs_info:${vcs}.quilt-${mode}:${usercontext}:${rrn}"
@@ -105,17 +105,6 @@ function VCS_INFO_quilt() {
         ;;
     esac
 
-    zstyle -s "${context}" quilt-patch-dir patches || patches="${QUILT_PATCHES}"
-    if [[ "${patches}" != /* ]]; then
-        tmp=${patches:-patches}
-        patches="$(VCS_INFO_quilt-dirfind "${tmp}")"
-        ret=$?
-        (( ret )) && return ${ret}
-        patches=${patches}/${tmp}
-    else
-        [[ -d ${patches} ]] || return 1
-    fi
-
     pc="$(VCS_INFO_quilt-dirfind .pc .version)"
     ret=$?
     if (( ret == 0 )); then
@@ -129,12 +118,27 @@ function VCS_INFO_quilt() {
         else
             applied=()
         fi
+        patches=$(<$pc/.quilt_patches)
     fi
     if zstyle -t "${context}" get-unapplied; then
         # This zstyle call needs to be moved further up if `quilt' needs
         # to be run in more places than this one.
         zstyle -s "${context}" quiltcommand quiltcommand || quiltcommand='quilt'
-        unapplied=( ${(f)"$(QUILT_PATCHES=$patches $quiltcommand --quiltrc /dev/null unapplied 2> /dev/null)"} )
+        quilt_env=(env)
+        if [ -z "$patches" ]; then
+            zstyle -s "${context}" quilt-patch-dir patches || patches="${QUILT_PATCHES}"
+            if [[ "${patches}" != /* ]]; then
+                tmp=${patches:-patches}
+                patches="$(VCS_INFO_quilt-dirfind "${tmp}")"
+                ret=$?
+                (( ret )) && return ${ret}
+                patches=${patches}/${tmp}
+            else
+                [[ -d ${patches} ]] || return 1
+            fi
+            quilt_env+=(QUILT_PATCHES="$patches")
+        fi
+        unapplied=( ${(f)"$(${quilt_env[@]} $quiltcommand --quiltrc /dev/null unapplied 2> /dev/null)"} )
         unapplied=( ${unapplied:#} )
     else
         unapplied=()