mirror of https://github.com/perkeep/perkeep.git
Rewrite misc/review in Perl for portability.
Change-Id: I428773e5464eb53e64cc94590aa5731ebf74b03b
This commit is contained in:
parent
16cc888842
commit
87783c0ee8
|
@ -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
|
31
misc/review
31
misc/review
|
@ -1,23 +1,28 @@
|
|||
#!/bin/sh
|
||||
set -e
|
||||
#!/usr/bin/perl
|
||||
|
||||
TOPLEVEL_DIR=$(readlink -f $(dirname $(readlink -f $0))/..)
|
||||
HOOK_FILE="$TOPLEVEL_DIR/.git/hooks/commit-msg"
|
||||
if ! test -e "$HOOK_FILE"; then
|
||||
cat - <<EOF
|
||||
use strict;
|
||||
use FindBin qw($Bin);
|
||||
|
||||
my $hook_file = "$Bin/../.git/hooks/commit-msg";
|
||||
|
||||
unless (-e $hook_file) {
|
||||
print <<EOF;
|
||||
Presubmit hook to add Change-Id to commit messages is missing.
|
||||
Downloading to $HOOK_FILE...
|
||||
Copying to $hook_file.
|
||||
EOF
|
||||
scp -p -P 29418 $USER@camlistore.org:hooks/commit-msg "$HOOK_FILE"
|
||||
cat - <<EOF
|
||||
|
||||
system("cp", "-p", "$Bin/commit-msg.githook", $hook_file) and die "cp failed.\n";
|
||||
|
||||
print <<EOF;
|
||||
Amending last commit to add Change-Id.
|
||||
Please re-save description without making changes.
|
||||
|
||||
Press Enter to continue.
|
||||
EOF
|
||||
read foo
|
||||
git commit --amend
|
||||
fi
|
||||
|
||||
git push ssh://$USER@camlistore.org:29418/camlistore HEAD:refs/for/master
|
||||
scalar(<STDIN>);
|
||||
|
||||
system("git", "commit", "--amend") and die "git commit --amend fail\n";
|
||||
}
|
||||
|
||||
exec("git", "push", "ssh://$ENV{USER}\@camlistore.org:29418/camlistore", "HEAD:refs/for/master");
|
||||
|
|
Loading…
Reference in New Issue