diff options
| author | 2016-09-03 22:46:54 +0000 | |
|---|---|---|
| committer | 2016-09-03 22:46:54 +0000 | |
| commit | b5500b9ca0102f1ccaf32f0e77e96d0739aded9b (patch) | |
| tree | e1b7ebb5a0231f9e6d8d3f6f719582cebd64dc98 /gnu/llvm/utils/git-svn/git-svnrevert | |
| parent | clarify purpose of src/gnu/ directory. (diff) | |
| download | wireguard-openbsd-b5500b9ca0102f1ccaf32f0e77e96d0739aded9b.tar.xz wireguard-openbsd-b5500b9ca0102f1ccaf32f0e77e96d0739aded9b.zip | |
Use the space freed up by sparc and zaurus to import LLVM.
ok hackroom@
Diffstat (limited to 'gnu/llvm/utils/git-svn/git-svnrevert')
| -rwxr-xr-x | gnu/llvm/utils/git-svn/git-svnrevert | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/gnu/llvm/utils/git-svn/git-svnrevert b/gnu/llvm/utils/git-svn/git-svnrevert new file mode 100755 index 00000000000..4185ee7ae87 --- /dev/null +++ b/gnu/llvm/utils/git-svn/git-svnrevert @@ -0,0 +1,64 @@ +#!/bin/bash + +if [ $# -ne 1 ]; then + echo "Invalid arguments!" + echo "$0 <rNNNNNN | git-hash>" + exit 1 +fi + +if [ -n "$(git status -uno -s --porcelain)" ]; then + echo "You have unstashed changes. Please stash and then revert." + git status -uno + exit 1 +fi + +COMMIT=$1 +OTHER=$(git svn find-rev "$COMMIT") +if [ $? -ne 0 ] || [ "$OTHER" = "" ]; then + echo "Error! Could not find an svn/git revision for commit $COMMIT!" + echo + echo "Possible problems are:" + echo " * Your revision number ($COMMIT) is wrong" + echo " * This tree is not up to date (before that commit)" + echo " * This commit in in another three (llvm, clang, compiler-rt, etc)" + exit 1 +fi + +if [ -n "$(echo $COMMIT | grep '^r[0-9]\+')" ]; then + SVN=`echo $COMMIT | sed -e 's/^r//'` + GIT=$OTHER +else + SVN=$OTHER + GIT=$COMMIT +fi + +# Grab the one line message for our revert commit message. +ONE_LINE_MSG=$(git log --oneline $GIT -1 | cut -f2- -d " ") + +# Revert the commit. +git revert --no-commit $GIT 2>/dev/null +if [ $? -ne 0 ]; then + echo "Error! Failed to revert commit r$SVN. Resetting to head." + git reset --hard HEAD + exit 1 +fi + +# Create a template in our .git directory. +TEMPLATE="`git rev-parse --git-dir`/git-svn-revert-template" +cat > $TEMPLATE <<EOF +Revert "$ONE_LINE_MSG" + +This reverts commit r$SVN. +EOF + +# Begin the commit but give our user an opportunity to edit it. +git commit --file="$TEMPLATE" --edit +if [ $? -ne 0 ]; then + echo "Error! Failed to commit reverting commit for commit r$SVN. Reverting to head." + git reset --hard HEAD + rm -rf $TEMPLATE + exit 1 +fi + +rm -rf $TEMPLATE + |
