diff options
-rw-r--r-- | Makefile | 12 | ||||
-rwxr-xr-x | v4l/scripts/prep_commit_msg.pl | 73 |
2 files changed, 56 insertions, 29 deletions
@@ -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 |