Browse Source

Remove the automerge script

This makes it impossible to run this script by mistake, as it should
no longer be used with the new master based workflow.

Change-Id: I0400ecb20bb135c09e0414196f692dd8e9ffa510
tags/7.2.0
Jonatan Kronqvist 10 years ago
parent
commit
3cd07c2d07
1 changed files with 0 additions and 165 deletions
  1. 0
    165
      scripts/automerge7.sh

+ 0
- 165
scripts/automerge7.sh View File

@@ -1,165 +0,0 @@
#!/bin/bash

IGNORE=7.0
FROM=7.1
TO=7.2

IGNORE_HEAD=origin/$IGNORE
FROM_HEAD=origin/$FROM
PUSH="origin HEAD:refs/for/$TO"
EMAIL_AUTHOR=
if [ "$1" = "email" ]
then
EMAIL_AUTHOR=1
fi

show() {
sCommit=$1
if [ "$sCommit" == "" ]
then
echo "show() missing commit id"
exit 1
fi
git show -s $sCommit
}
merge() {
mCommit=$1
if [ "$mCommit" == "" ]
then
echo "merge() missing commit id"
exit 2
fi

# echo "merge($mCommit)"

git merge -m "Should be overwritten by merge script" $mCommit $2
if [ "$?" != "0" ]
then
echo "Merge failed for commit $mCommit"
echo "Manual merge is needed"
exit 3
fi
# Add a change id using git hook
git commit --amend --no-edit

}

pushMerged() {
# echo "pushMerged()"
git push $PUSH
if [ "$?" != "0" ]
then
echo "Push failed!"
exit 4
fi
}

maybe_commit_and_push() {
# echo "maybe_commit_and_push()"
cpCommit=$1
if [ "$cpCommit" == "" ]
then
# Nothing to merge currently
return
fi
cpCommitMsg=$2
if [ "$cpCommitMsg" == "" ]
then
echo "Internal error, no commit message passed to maybe_commit_and_push()"
exit 5
fi
# echo "maybe_commit_and_push: Merging $cpCommit"
merge $cpCommit
echo -e "Merge changes from $FROM_HEAD\n\n$cpCommitMsg"|git commit --amend -F -
pushMerged
}

can_merge() {
commit=$1
git merge --no-commit --no-ff $commit > /dev/null 2>&1
result=$?
git reset --hard HEAD > /dev/null 2>&1
return $result
}

nothingToCommit=`git status | grep "nothing to commit"`
if [ "$nothingToCommit" == "" ]
then
git status
echo "Can not merge when there are unstaged changes."
exit 6
fi

git checkout $TO
git fetch

pending=`git log $TO..$FROM_HEAD ^$IGNORE_HEAD --reverse|grep "^commit "|sed "s/commit //"`

pendingCommit=
pendingCommitMessage=
for commit in $pending
do
echo "Checking $commit..."
mergeDirective=`git log -n 1 --format=%B $commit|grep "^Merge:"|sed "s/Merge: //"`
commitMsg=`git log -n 1 --format=oneline --abbrev-commit $commit | sed 's/\\\\/\\\\\\\\/g'` #Multiple levels of unescaping, sed just changes \ to \\
if [ "$mergeDirective" == "" ]
then
if can_merge $commit
then
pendingCommit=$commit
pendingCommitMessage=$pendingCommitMessage"$commitMsg\n"
echo pendingCommitMessage: $pendingCommitMessage
else
maybe_commit_and_push $pendingCommit "$pendingCommitMessage"
pendingCommit=
pendingCommitMessage=
echo
echo "Stopping merge at $commit because of merge conflicts"
echo "The following commit must be manually merged."
show $commit
if [ "$EMAIL_AUTHOR" = "1" ]
then
author=`git show --format=%aE -s $commit`
echo "Email sent to $author"
(show $commit ; echo ; git merge $commit) |mail -s "Merge of your commit $commit to $TO failed" $author
fi
exit 7
fi
elif [ "$mergeDirective" == "no" ]
then
maybe_commit_and_push $pendingCommit "$pendingCommitMessage"
pendingCommit=
pendingCommitMessage=
echo
echo "Doing a no-op merge because of Merge: no for $commit"
git log -n 1 --format=%B $commit
echo
# Do a no-op merge
git merge $commit -s ours
echo -e "No-op merge from $FROM_HEAD\n\n$commitMsg"|git commit --amend -F -
pushMerged
elif [ "$mergeDirective" == "manual" ]
then
maybe_commit_and_push $pendingCommit "$pendingCommitMessage"
pendingCommit=
pendingCommitMessage=
echo
echo "Stopping merge at $commit (merge: manual)"
echo "The following commit must be manually merged."
show $commit
exit 8
else
maybe_commit_and_push $pendingCommit "$pendingCommitMessage"
pendingCommit=
pendingCommitMessage=
echo
echo "Commit $commit contains an unknown merge directive, Merge: $mergeDirective"
echo "Stopping merge."
show $commit
exit 9
fi
done

# Push any pending merges
maybe_commit_and_push $pendingCommit "$pendingCommitMessage"

Loading…
Cancel
Save