From 35a54ae2e849cf4044175555a43dc4d6d9a3431f Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Wed, 8 Mar 2006 10:59:03 -0300 Subject: Added a script to make easier to import patches sent by email From: Mauro Carvalho Chehab This script is capable to mass import patches on a mbox file, test for it, allow comment editing and applying it. This script requires: 1) git, since it uses gitimport to break a mbox into patches; 2) hg mailqueue. It is easier to manage patches using mq, allowing to work with the patches before applying to the tree. Signed-off-by: Mauro Carvalho Chehab --- v4l/scripts/hghead.pl | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100755 v4l/scripts/hghead.pl (limited to 'v4l/scripts/hghead.pl') diff --git a/v4l/scripts/hghead.pl b/v4l/scripts/hghead.pl new file mode 100755 index 000000000..d0f657c08 --- /dev/null +++ b/v4l/scripts/hghead.pl @@ -0,0 +1,143 @@ +#!/usr/bin/perl +use strict; +use Date::Parse; + +################################################################# +# analyse diffs + +my $in = shift; +my $line; +my $subject; +my $from=0; +my $sub_ok=0; +my $init=0; +my $num=0; +my $maint_ok=0; +my $noblank=1; +my $maintainer_name=$ENV{CHANGE_LOG_NAME}; +my $maintainer_email=$ENV{CHANGE_LOG_EMAIL_ADDRESS}; +my $from=""; +my $body=""; +my $signed=""; + +open IN, "<$in"; + +while ($line = ) { + if ($line =~ m/Index.*/) { + last; + } + if ($line =~ m/^diff .*/) { + last; + } + if ($line =~ m/^\-\-\- .*/) { + last; + } + if ($line =~ m/^\-\-\-.*/) { + last; + } + if ($line =~ m/^\+\+\+ .*/) { + last; + } + + if ($line =~ m/^Date:\s*(.*)/) { + my $time = str2time($1); +# my $timestr = gmtime($time); + + if ($time) { + print "# Date: $time\n"; + } + next; + } + if ($line =~ m/^From:/) { + if ($line =~ m/^From:[\s\"]*([^\"]*)[\s\"]*<(.*)>/) { + if ($1 eq "") { + next; + } + my $name=$1; + my $email=$2; + $name =~ s/\s+$//; + $email =~ s/\s+$//; + $from= "From: $name <$email>\n"; + next; + } + print "Bad formed author\n"; + die; + } + + if ($line =~ m/^Subject:\s*(.*)\n/) { + $subject=$1; + next; + } + + if ($line =~ m;^ .*\/.*\| *[0-9]*;) { + next; + } + if ($line =~m/\d+\s*file.* changed, /) { + next; + } + + if ($line =~ m/^Signed-off-by:.*/) { + $noblank=1; + if ($line =~ m/$maintainer_name/) { + $maint_ok=1; + } + + $signed="$signed$line"; + next; + } + if ($line =~ m/^Acked-by:.*/) { + print $line; + next; + } + + if ($line =~ m/^[a-zA-Z\-]*:/) { + if ($line =~ m/Changeset:\s*(.*)\n/) { + $num=$1; + } + print "# $line"; + next; + } + + if ($line =~ m|^(V4L\/DVB\s*\(.+\)\s*:.*)\n|) { + $subject=$1; + $line="\n"; + } + + if ($sub_ok == 0) { + $sub_ok=1; + substr( $subject, 0, 1 ) = uc (substr ($subject, 0, 1)); + if ($subject =~ m|V4L\/DVB\s*(.+)|) { + print "$1\n\n"; + } else { + print "$subject\n\n"; + } + if ($line =~ m/^\n/) { + next; + } + } + + if ($noblank) { + if ($line =~ m/^\n/) { + next; + } + } + if (!$init) { + $init=1; + $noblank=0; + } + $body="$body$line"; +} +close IN; + +if ($from eq "") { + print "Bad formed author\n"; + die; +} +if (!$maint_ok) { + $signed=$signed."Signed-off-by: $maintainer_name <$maintainer_email>\n"; +} +$body=~s/\n+$//; +$body=~s/^\n+$//; + +print "$from\n$body\n\n$signed"; + -- cgit v1.2.3 From f780713336a2db00609e7bb63648fbd96c5a856d Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Wed, 8 Mar 2006 11:53:44 -0300 Subject: Fixed a small bug at hghead.pl From: Mauro Carvalho Chehab Commiter name were not preserved by mailimport at the way it was. Now, commiter name will be the HGUSER, and from: line will be included at commit message, preserving both commiter and patch authors. Signed-off-by: Mauro Carvalho Chehab --- v4l/scripts/hghead.pl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'v4l/scripts/hghead.pl') diff --git a/v4l/scripts/hghead.pl b/v4l/scripts/hghead.pl index d0f657c08..c495abc8b 100755 --- a/v4l/scripts/hghead.pl +++ b/v4l/scripts/hghead.pl @@ -107,9 +107,7 @@ while ($line = ) { $sub_ok=1; substr( $subject, 0, 1 ) = uc (substr ($subject, 0, 1)); if ($subject =~ m|V4L\/DVB\s*(.+)|) { - print "$1\n\n"; - } else { - print "$subject\n\n"; + $subject=$1; } if ($line =~ m/^\n/) { next; @@ -139,5 +137,7 @@ if (!$maint_ok) { $body=~s/\n+$//; $body=~s/^\n+$//; -print "$from\n$body\n\n$signed"; +# First from is used by hg to recognize commiter name +print "From: $maintainer_name <$maintainer_email>\n"; +print "$subject\n$from\n$body\n\n$signed"; -- cgit v1.2.3 From 02474d0a0181592ab0ce78cc5b536b76d23a4799 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Fri, 10 Mar 2006 14:20:58 -0300 Subject: Added better handling for errors at mailscript From: Mauro Carvalho Chehab Now, it checks if author have signed its own patch. Also, prints better error messages. Signed-off-by: Mauro Carvalho Chehab --- v4l/scripts/hghead.pl | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'v4l/scripts/hghead.pl') diff --git a/v4l/scripts/hghead.pl b/v4l/scripts/hghead.pl index c495abc8b..5c5e63f1f 100755 --- a/v4l/scripts/hghead.pl +++ b/v4l/scripts/hghead.pl @@ -19,6 +19,7 @@ my $maintainer_email=$ENV{CHANGE_LOG_EMAIL_ADDRESS}; my $from=""; my $body=""; my $signed=""; +my $fromname=""; open IN, "<$in"; @@ -57,10 +58,11 @@ while ($line = ) { my $email=$2; $name =~ s/\s+$//; $email =~ s/\s+$//; - $from= "From: $name <$email>\n"; + $fromname="$name <$email>"; + $from= "From: $fromname\n"; next; } - print "Bad formed author\n"; + print "Bad: author line have a wrong syntax\n"; die; } @@ -86,7 +88,7 @@ while ($line = ) { next; } if ($line =~ m/^Acked-by:.*/) { - print $line; + $signed="$signed$line"; next; } @@ -128,12 +130,19 @@ while ($line = ) { close IN; if ($from eq "") { - print "Bad formed author\n"; + print "Bad: author doesn't exist!\n"; die; } + if (!$maint_ok) { $signed=$signed."Signed-off-by: $maintainer_name <$maintainer_email>\n"; } + +if (!$signed =~ m/$from/) { + print "Bad: Author didn't signed his patch!\n"; + die; +} + $body=~s/\n+$//; $body=~s/^\n+$//; -- cgit v1.2.3 From 1254c4a78ff6728e02609f72002c87783b1a610e Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Fri, 10 Mar 2006 15:20:59 -0300 Subject: Some fixes and improvements at mailimport From: Mauro Carvalho Chehab hg mq were offering some troubles, because it seems to be also updated at master site. So, now, default is not to use it. Several validations added. Also improved output log by separating subject from from: line. Signed-off-by: Mauro Carvalho Chehab --- v4l/scripts/hghead.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'v4l/scripts/hghead.pl') diff --git a/v4l/scripts/hghead.pl b/v4l/scripts/hghead.pl index 5c5e63f1f..ddaef0767 100755 --- a/v4l/scripts/hghead.pl +++ b/v4l/scripts/hghead.pl @@ -66,7 +66,7 @@ while ($line = ) { die; } - if ($line =~ m/^Subject:\s*(.*)\n/) { + if ($line =~ m/^Subject:\s*(.*\n)/) { $subject=$1; next; } @@ -100,7 +100,7 @@ while ($line = ) { next; } - if ($line =~ m|^(V4L\/DVB\s*\(.+\)\s*:.*)\n|) { + if ($line =~ m|^(V4L\/DVB\s*\(.+\)\s*:.*\n)|) { $subject=$1; $line="\n"; } @@ -147,6 +147,6 @@ $body=~s/\n+$//; $body=~s/^\n+$//; # First from is used by hg to recognize commiter name -print "From: $maintainer_name <$maintainer_email>\n"; +print "#Committer: $maintainer_name <$maintainer_email>\n"; print "$subject\n$from\n$body\n\n$signed"; -- cgit v1.2.3