mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Interchangeable commit ids can now be used on this git-svnrevert, which will figure out what kind of commit that is (if you use format rNNNN for SVN commits) and make sure the right ids are used in the right places. It's a little bit more robust and user-friendly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219290 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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 ]; then
 | |
|     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 $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
 | |
| 
 |