[Intel-gfx] [maintainer-tools PATCH] dim: Properly handle series on apply_branch
Rodrigo Vivi
rodrigo.vivi at intel.com
Wed Aug 23 17:29:33 UTC 2017
So far we could use *dim* to apply a whole series
in a mbox, but only the very last patch was receiving
all the checks and patchwork link.
So this patch remove this limitation by using git mailsplit
to split the mbox and than use git am and checks individually
on each patch.
v2: a. Don't loop with `ls $dir` nor use ls. Shellcheck recommends
globs instead. Reference: SC2045
c. Split the apply patch in a separated function as suggested
by Jani.
b. Use -b on git mailsplit so it will automatically it is not
an mbox file and parse it assuming a single mail message.
This fixes the issue Jani notice with input directly from
MUA: "corrupt mailbox".
v3: Pass $@ to apply_patch function and properly handle the shift.
Handle returns. If any patch in the series had some kind of goof
return 1.
v4: a. Fix "@"
b. handle in a way that rv gets propagated with set -e
c. Delete temporary files and directory.
Cc: Jani Nikula <jani.nikula at intel.com>
Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
dim | 52 ++++++++++++++++++++++++++++++++++------------------
1 file changed, 34 insertions(+), 18 deletions(-)
diff --git a/dim b/dim
index 11aa675cc3bc..46bd66f3cd3d 100755
--- a/dim
+++ b/dim
@@ -756,33 +756,21 @@ function dim_push
dim_push_branch $(git_current_branch) "$@"
}
-# ensure we're on branch $1, and apply patches. the rest of the arguments are
-# passed to git am.
-dim_alias_ab=apply-branch
-dim_alias_sob=apply-branch
-function dim_apply_branch
+function apply_patch #patch_file
{
- local branch file message_id committer_email patch_from sob rv
+ local patch message_id committer_email patch_from sob rv
- branch=${1:?$usage}
+ patch="$1"
shift
- file=$(mktemp)
-
- assert_branch $branch
- assert_repo_clean
-
- cat > $file
-
- message_id=$(message_get_id $file)
-
+ message_id=$(message_get_id $patch)
committer_email=$(git_committer_email)
- patch_from=$(grep "From:" "$file" | head -1)
+ patch_from=$(grep "From:" "$patch" | head -1)
if [[ "$patch_from" != *"$committer_email"* ]] ; then
sob=-s
fi
- git am --scissors -3 $sob "$@" $file
+ git am --scissors -3 $sob "$@" $patch
if [ -n "$message_id" ]; then
dim_commit_add_tag "Link: https://patchwork.freedesktop.org/patch/msgid/$message_id"
@@ -799,6 +787,34 @@ function dim_apply_branch
fi
eval $DRY $DIM_POST_APPLY_ACTION
+ return $rv
+}
+
+# ensure we're on branch $1, and apply patches. the rest of the arguments are
+# passed to git am.
+dim_alias_ab=apply-branch
+dim_alias_sob=apply-branch
+function dim_apply_branch
+{
+ local branch file rv
+
+ branch=${1:?$usage}
+ shift
+ file=$(mktemp)
+ dir=$(mktemp -d)
+
+ assert_branch $branch
+ assert_repo_clean
+
+ cat > $file
+ git mailsplit -b -o$dir $file > /dev/null
+
+ for patch in $dir/*; do
+ if ! apply_patch $patch "$@"; then
+ rv=1
+ fi
+ done
+ rm -rf $file $dir
return $rv
}
--
2.13.2
More information about the Intel-gfx
mailing list