45114: vcs_info quilt: Improve support for svn-style patch headers.

Additional lines between the |-separated header line and the actual
log message, as generated by 'svn log -v' and 'svn log -g', are now
supported.

This change affects you if you have quilt patches with 'svn log'-style
information in their headers, regardless of whether you use quilt
standalone, quilt over svn, or quilt over some other VCS.
This commit is contained in:
Daniel Shahaf 2019-12-21 15:58:26 +00:00
parent 41e3518589
commit 86db36ab70
2 changed files with 16 additions and 7 deletions

View file

@ -1,5 +1,8 @@
2019-12-22 Daniel Shahaf <danielsh@apache.org>
* 45114: Functions/VCS_Info/VCS_INFO_patch2subject: vcs_info
quilt: Improve support for svn-style patch headers.
* 45115: Misc/vcs_info-examples: vcs_info examples: Make the
quilt-patch-dir example friendlier.

View file

@ -14,10 +14,7 @@
IFS= read -r "lines[$i]"
if [[ -z ${lines[$i]} ]] || [[ ${lines[$i]} == (#b)(---[^-]|Index:)* ]]; then
lines[$i]=()
# For 'svn log -r N --diff' output, read the first paragraph too.
if ! [[ $lines[i-1] =~ $svn_log_pattern ]]; then
break
fi
break
fi
done < "$1"
@ -55,9 +52,18 @@
fi
} < "$1"
REPLY=$needle
elif [[ $lines[2] =~ $svn_log_pattern ]]; then
REPLY=$lines[4]
if (( ${+lines[5]} )); then REPLY+='...'; fi
elif [[ $lines[1] =~ $svn_log_pattern ]] || [[ $lines[2] =~ $svn_log_pattern ]]; then
# Read up to the next blank line, and the first two lines after it.
integer multiline=0
{
while read -r needle; [[ -n $needle ]]; do done
# Read the first line of the second paragraph, which is the first
# line of the log message.
read -r needle
read -r && [[ -n $REPLY ]] && multiline=1
} < "$1"
REPLY=$needle
if (( multiline )); then REPLY+='...'; fi
elif (( ${+lines[1]} )); then
# The first line of the file is not part of the diff.
REPLY=${lines[1]}