summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile12
-rwxr-xr-xv4l/scripts/prep_commit_msg.pl73
2 files changed, 56 insertions, 29 deletions
diff --git a/Makefile b/Makefile
index 42c22f72a..9d6f7c3e7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,5 @@
BUILD_DIR := $(shell pwd)/v4l
+TMP ?= /tmp
REPO_PULL := http://linuxtv.org/hg/v4l-dvb
ifeq ($(REPO_PUSH),)
ifneq ($(CHANGE_LOG_LOGIN),)
@@ -26,9 +27,10 @@ install:
commit cvscommit hgcommit change changes changelog:: whitespace
cd $(BUILD_DIR); scripts/cardlist; cd ..
- v4l/scripts/prep_commit_msg.pl >/tmp/v4l_hg_commit.msg
- $(EDITOR) /tmp/v4l_hg_commit.msg
- grep -v ^# /tmp/v4l_hg_commit.msg | hg commit -l -
+ v4l/scripts/prep_commit_msg.pl $(TMP)/v4l_hg_whitespace > \
+ $(TMP)/v4l_hg_commit.msg
+ $(EDITOR) $(TMP)/v4l_hg_commit.msg
+ grep -v '^#' $(TMP)/v4l_hg_commit.msg | hg commit -l -
@echo "*** PLEASE CHECK IF LOG IS OK:"
@hg log -v -r -1
@echo "*** If not ok, do hg undo and make commit again"
@@ -43,5 +45,5 @@ push::
whitespace:
@echo "Cleaning bad whitespaces"
- @v4l/scripts/strip-trailing-whitespaces.sh fast | patch -p0
-
+ @v4l/scripts/strip-trailing-whitespaces.sh fast | \
+ tee $(TMP)/v4l_hg_whitespace | patch -p0
diff --git a/v4l/scripts/prep_commit_msg.pl b/v4l/scripts/prep_commit_msg.pl
index ac958667b..a4594c7f9 100755
--- a/v4l/scripts/prep_commit_msg.pl
+++ b/v4l/scripts/prep_commit_msg.pl
@@ -1,34 +1,59 @@
#!/usr/bin/perl
-$f=shift;
-open IN,"hg diff|diffstat -p1 |";
-my $n=2;
-my $from="";
-my $first="";
-my $changed="";
-$out="";
-while (<IN>) {
- $changed="$changed#$_";
-}
+my $autopatch = shift;
+# Get Hg username from environment
my $user = $ENV{HGUSER};
-if ( $user eq "" ) {
+# Didn't work? Try the .hgrc file
+if ($user eq "") {
+ open IN, "<$ENV{HOME}/.hgrc";
+ while (<IN>) {
+ if(/^\s*username\s*=\s*(\S.*)$/) {
+ $user = $1;
+ last;
+ }
+ }
+ close IN;
+}
+
+# Still no luck? Try some other environment variables
+if ($user eq "") {
my $name = $ENV{CHANGE_LOG_NAME};
my $email = $ENV{CHANGE_LOG_EMAIL_ADDRESS};
+ $user = "$name <$email>" if ($name ne "" || $email ne "");
+}
+
+# Last try to come up with something
+if ($user eq "") {
+ $user = "$ENV{USER} <>";
+}
- $user="$name <$email>";
+print "# Added/removed/changed files:\n";
+system "hg diff | diffstat -p1 -c";
+if (-s $autopatch) {
+ print "#\n# Note, a problem with your patch was detected! These changes were made\n";
+ print "# automatically: $autopatch\n";
+ system "diffstat -p0 -c $autopatch";
+ print "#\n# Please review these changes and see if they belong in your patch or not.\n";
}
+print <<"EOF";
+#
+# For better log display, please keep a blank line after subject, after from,
+# and before signed-off-by.
+# First line should be the subject, without Subject:
+#
+
+
+# Now, patch author (just the main one), on a From: field
+# Please change below if the committer is not the patch author.
+#
+From: $user
+
+# Then a detailed description:
+
-$first= "# Please change below if you are not patch author\n#\nFrom: $user";
-$out= "# At the end Signed-off-by: fields by patch author and committer, at least\n#\nSigned-off-by: $user";
-$from= "From: $user";
-
-printf "#Added/removed/changed files:\n%s#\n" .
- "# For better log display, please keep a blank line after subject, after from\n" .
- "# and before signed-off-by\n" .
- "# First line should be the subject, without Subject:\n#\n\n\n" .
- "# Now, patch author (just the main one), on a From: field\n" .
- "# Please change below if the committer is not the patch author\n#\n%s\n\n" .
- "# Then a detailed description:\n\n\n%s",
- $changed,$from,$out;
+# At the end Signed-off-by: fields by patch author and committer, at least.
+#
+Signed-off-by: $user
+EOF