[coreboot] New patch to review: 14dfac7 Add local copy of commit-msg hook

Patrick Georgi (patrick@georgi-clan.de) gerrit at coreboot.org
Thu Jun 30 19:57:32 CEST 2011


Patrick Georgi (patrick at georgi-clan.de) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/73

-gerrit

commit 14dfac7be2d1b7dad3ce0d33f8c153316e511acf
Author: Patrick Georgi <patrick at georgi-clan.de>
Date:   Thu Jun 30 19:55:31 2011 +0200

    Add local copy of commit-msg hook
    
    To avoid using untrusted network to download code, copy the
    relevant file to the repo and adapt "make gitconfig" to copy
    from there.
    
    Change-Id: I21f0b58d59250aa5d795cf289267ad93bd8d74db
    Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
 Makefile.inc              |    2 +-
 util/gitconfig/commit-msg |  104 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 105 insertions(+), 1 deletions(-)

diff --git a/Makefile.inc b/Makefile.inc
index 8191a04..2b3ea8d 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -232,7 +232,7 @@ lint:
 	rm -f $$LINTLOG
 
 gitconfig:
-	if ! [ -x .git/hooks/commit-msg ]; then wget -O .git/hooks/commit-msg http://review.coreboot.org/tools/hooks/commit-msg; chmod +x .git/hooks/commit-msg; fi
+	if ! [ -x .git/hooks/commit-msg ]; then cp util/gitconfig/commit-msg .git/hooks/commit-msg; chmod +x .git/hooks/commit-msg; fi
 	(git config --global user.name >/dev/null && git config --global user.email >/dev/null) || (printf 'Please configure your name and email in git:\n\n git config --global user.name "Your Name Comes Here"\n git config --global user.email your.email at example.com\n'; exit 1)
 
 crossgcc: clean-for-update
diff --git a/util/gitconfig/commit-msg b/util/gitconfig/commit-msg
new file mode 100755
index 0000000..789bad3
--- /dev/null
+++ b/util/gitconfig/commit-msg
@@ -0,0 +1,104 @@
+#!/bin/sh
+# From Gerrit Code Review 2.1.7-rc2
+#
+# Part of Gerrit Code Review (http://code.google.com/p/gerrit/)
+#
+# Copyright (C) 2009 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+CHANGE_ID_AFTER="Bug|Issue"
+MSG="$1"
+
+# Check for, and add if missing, a unique Change-Id
+#
+add_ChangeId() {
+	clean_message=`sed -e '
+		/^diff --git a\/.*/{
+			s///
+			q
+		}
+		/^Signed-off-by:/d
+		/^#/d
+	' "$MSG" | git stripspace`
+	if test -z "$clean_message"
+	then
+		return
+	fi
+
+	if grep -i '^Change-Id:' "$MSG" >/dev/null
+	then
+		return
+	fi
+
+	id=`_gen_ChangeId`
+	perl -e '
+		$MSG = shift;
+		$id = shift;
+		$CHANGE_ID_AFTER = shift;
+
+		undef $/;
+		open(I, $MSG); $_ = <I>; close I;
+		s|^diff --git a/.*||ms;
+		s|^#.*$||mg;
+		exit unless $_;
+
+		@message = split /\n/;
+		$haveFooter = 0;
+		$startFooter = @message;
+		for($line = @message - 1; $line >= 0; $line--) {
+			$_ = $message[$line];
+
+			if (/^[a-zA-Z0-9-]+:/ && !m,^[a-z0-9-]+://,) {
+				$haveFooter++;
+				next;
+			}
+			next if /^[ []/;
+			$startFooter = $line if ($haveFooter && /^\r?$/);
+			last;
+		}
+
+		@footer = @message[$startFooter+1.. at message];
+		@message = @message[0..$startFooter];
+		push(@footer, "") unless @footer;
+
+		for ($line = 0; $line < @footer; $line++) {
+			$_ = $footer[$line];
+			next if /^($CHANGE_ID_AFTER):/i;
+			last;
+		}
+		splice(@footer, $line, 0, "Change-Id: I$id");
+
+		$_ = join("\n", @message, @footer);
+		open(O, ">$MSG"); print O; close O;
+	' "$MSG" "$id" "$CHANGE_ID_AFTER"
+}
+_gen_ChangeIdInput() {
+	echo "tree `git write-tree`"
+	if parent=`git rev-parse HEAD^0 2>/dev/null`
+	then
+		echo "parent $parent"
+	fi
+	echo "author `git var GIT_AUTHOR_IDENT`"
+	echo "committer `git var GIT_COMMITTER_IDENT`"
+	echo
+	printf '%s' "$clean_message"
+}
+_gen_ChangeId() {
+	_gen_ChangeIdInput |
+	git hash-object -t commit --stdin
+}
+
+
+add_ChangeId




More information about the coreboot mailing list