Index: third_party/re2/lib/git/commit-msg.hook |
diff --git a/third_party/re2/lib/git/commit-msg.hook b/third_party/re2/lib/git/commit-msg.hook |
new file mode 100755 |
index 0000000000000000000000000000000000000000..985016b5b6887cf4352aa55349c379e20c8697e8 |
--- /dev/null |
+++ b/third_party/re2/lib/git/commit-msg.hook |
@@ -0,0 +1,104 @@ |
+#!/bin/sh |
+# From Gerrit Code Review 2.2.1 |
+# |
+# 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..@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 |