tools_dir=$(dirname "$0")
+hc=()
+cc=()
+cformat='%(trailers:only=no,valueonly,unfold,key=signed-off-by)%aN <%aE>%n%cN <%cE>'
+
+read -r -a head_commits -p 'HEAD commit(s): '
+for c in "${head_commits[@]}"; do
+ if ! git rev-parse --verify "$c" >/dev/null; then
+ printf 'Unknown commit %s\n' "$c"
+ exit 1
+ fi
+ hc+=( "$(git log -1 --format='%h ("%s")' "$c")" )
+ readarray -t -O "${#cc[@]}" cc < <(git log -1 --format="$cformat" "$c" | sort -u)
+done
+
printf -v files ' %s\n' "$@"
conf='a conflict'
if [ "$#" -gt 1 ]; then
subject='manual merge of the BRANCH tree with the FIXME tree'
-"$tools_dir/message_helper" "${branch[@]}" "$subject" <<EOF
+"$tools_dir/message_helper" "${branch[@]}" "$subject" "${cc[@]}" <<EOF
FIXME: Add owner of second tree to To:
Add author(s)/SOB of conflicting commits.
$files
between commit:
- ("")
+$(printf ' %s\n' "${hc[@]}")
from the FIXME tree and commit:
shift 2
fi
+subject="$1"
+shift
+
cc=( 'Linux Next Mailing List <linux-next@vger.kernel.org>'
- 'Linux Kernel Mailing List <linux-kernel@vger.kernel.org>' )
+ 'Linux Kernel Mailing List <linux-kernel@vger.kernel.org>'
+ "$@" )
if [ -z "$branch" ]; then
branch=$(grep '^Merging ' "$log" | tail -n 1 |
fi
contact=$(get_contacts "$branch")
-subject=${1//BRANCH/$branch}
-filter=( -e "s/BRANCH/$branch/g" )
+subject=${subject//BRANCH/$branch}
+filter=( -E -e 's/^([^ ])/|\1/' -e "s/BRANCH/$branch/g" )
if [ -n "$kconfig" ]; then
filter+=( -e "s/KCONFIG_NAME/$kconfig/g" )
fi
{
printf 'Hi all,\n\n'
- sed "${filter[@]}" | fmt -s
+ sed "${filter[@]}" | fmt -w 76 -u -p '|' | sed 's/^|//'
} | "$bin_dir"/send_email "linux-next: $subject" "$contact" "${cc[@]}"
exit 0
#!/bin/bash
mail_dir=$(realpath --relative-to=. "$(dirname "$0")/../mails")
-printf -v TARGET '%s/%(i%Y-%m-%d+%s)T.email' "$mail_dir" -1
+printf -v TARGET '%s/%(%Y-%m-%d+%s)T.email' "$mail_dir" -1
subject="$1"
shift
to="$1"
shift
+readarray -t cc < <(printf '%s\n' "$@" | sort -u)
+
+for i in "${!cc[@]}"; do
+ e=${cc[$i]##*<}
+ e=${e%%>*}
+ if grep -q -F "<$e>" <<<"$to"; then
+ unset "cc[$i]"
+ fi
+done
{
printf 'To: %s\n' "$to"
- printf 'Cc: %s\n' "$@"
+ if [ "${#cc[@]}" -gt 0 ]; then
+ printf 'Cc: %s\n' "${cc[@]}"
+ fi
printf 'Subject: %s\n\n' "$subject"
cat
} > "$TARGET"