On Wed, 23 Aug 2017, Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> wrote: > 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@xxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> LGTM, and seems to work in my workflow. BR, Jani. > --- > 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 > } -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx