diff options
author | Daniel Shahaf <d.s@daniel.shahaf.name> | 2017-01-21 12:12:31 +0000 |
---|---|---|
committer | Daniel Shahaf <d.s@daniel.shahaf.name> | 2017-01-25 04:22:28 +0000 |
commit | 699a38e698d544683b6cf24843e95d25aeedebbd (patch) | |
tree | 826b290ff31f1e4024b497b3bfe6613f5a79403b /Functions/VCS_Info/VCS_INFO_patch2subject | |
parent | 0e33ebc6514c8719513f3f20161274f6af2caffc (diff) | |
download | zsh-699a38e698d544683b6cf24843e95d25aeedebbd.tar.gz zsh-699a38e698d544683b6cf24843e95d25aeedebbd.tar.xz zsh-699a38e698d544683b6cf24843e95d25aeedebbd.zip |
40392: vcs_info patch2subject: Support `git show` output.
Diffstat (limited to 'Functions/VCS_Info/VCS_INFO_patch2subject')
-rw-r--r-- | Functions/VCS_Info/VCS_INFO_patch2subject | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Functions/VCS_Info/VCS_INFO_patch2subject b/Functions/VCS_Info/VCS_INFO_patch2subject index 583467bc8..e222e8382 100644 --- a/Functions/VCS_Info/VCS_INFO_patch2subject +++ b/Functions/VCS_Info/VCS_INFO_patch2subject @@ -1,6 +1,7 @@ # This function takes as an argument a filename of a patch and sets $REPLY to # a single-line "subject", or unsets it if no subject could be extracted. { + setopt localoptions extendedglob integer i integer -r LIMIT=10 local -a lines @@ -34,6 +35,22 @@ elif [[ ${lines[1]} == '# HG changeset patch' ]] && { needle=${${lines:#([#]*)}[1]}; [[ -n $needle ]] }; then # Mercurial patch REPLY=$needle + elif [[ ${lines[1]} == "commit "[0-9a-f](#c40) ]] && + [[ ${lines[2]} == "Author:"* && ${lines[3]} == "Date:"* ]] && + (( ! ${+lines[4]} )); then + # `git show` output. + # + # The log message is after the first blank line, so open() the file + # again. Also check whether the following line (second line of the + # log message itself) is empty. + { + repeat 4 { IFS= read -r } + IFS= read -r needle; needle=${needle#' '} + if IFS= read -r; REPLY=${REPLY#' '}; [[ -n $REPLY ]]; then + needle+='...' + fi + } < "$1" + REPLY=$needle elif (( ${+lines[1]} )); then # The first line of the file is not part of the diff. REPLY=${lines[1]} |