diff options
Diffstat (limited to 'utils/git-svn')
-rwxr-xr-x | utils/git-svn/git-svnrevert | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/utils/git-svn/git-svnrevert b/utils/git-svn/git-svnrevert index 06a9c44..f15e7ab 100755 --- a/utils/git-svn/git-svnrevert +++ b/utils/git-svn/git-svnrevert @@ -2,7 +2,7 @@ if [ $# -ne 1 ]; then echo "Invalid arguments!" - echo "$0 <commit to revert>" + echo "$0 <rNNNNNN | git-hash>" exit 1 fi @@ -13,20 +13,27 @@ if [ -n "$(git status -uno -s --porcelain)" ]; then fi COMMIT=$1 - -SVN_REVISION=$(git svn find-rev "$COMMIT") +OTHER=$(git svn find-rev "$COMMIT") if [ $? -ne 0 ]; then - echo "Error! Could not find an svn revision for commit $COMMIT!" + echo "Error! Could not find an svn/git revision for commit $COMMIT!" 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 $COMMIT -1 | cut -f2- -d " ") +ONE_LINE_MSG=$(git log --oneline $GIT -1 | cut -f2- -d " ") # Revert the commit. -git revert --no-commit $COMMIT 2>/dev/null +git revert --no-commit $GIT 2>/dev/null if [ $? -ne 0 ]; then - echo "Error! Failed to revert commit $COMMIT. Resetting to head." + echo "Error! Failed to revert commit r$SVN. Resetting to head." git reset --hard HEAD exit 1 fi @@ -36,13 +43,13 @@ TEMPLATE="`git rev-parse --git-dir`/git-svn-revert-template" cat > $TEMPLATE <<EOF Revert "$ONE_LINE_MSG" -This reverts commit r$SVN_REVISION. +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 $COMMIT. Reverting to head." + echo "Error! Failed to commit reverting commit for commit r$SVN. Reverting to head." git reset --hard HEAD rm -rf $TEMPLATE exit 1 |