49 lines
1002 B
Bash
Executable File
49 lines
1002 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
MWT=`git worktree list --porcelain | grep -B 3 "heads/master" | grep worktree \
|
|
|cut -d " " -f 2`
|
|
DWT=`git worktree list --porcelain | grep -B 3 "heads/devel" | grep worktree \
|
|
|cut -d " " -f 2`
|
|
if [ -n "$MWT" ]; then
|
|
# unfortunately git does not allow checking out the branch that
|
|
# has a work-tree elsewhere
|
|
pushd "$MWT"
|
|
else
|
|
BR=`git rev-parse --abbrev-ref HEAD`
|
|
if [ "$BR" != "master" ]; then
|
|
echo "Not on master branch"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
REV=`git log -1 | grep merge | sed -e 's/.*merge \([^ ]\+\).*/\1/'`
|
|
if [ -z "$REV" ]; then
|
|
echo "No merge commit found"
|
|
exit 1
|
|
fi
|
|
|
|
if ! git diff-files --quiet; then
|
|
echo "Work tree is not clean"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Undoing $REV"
|
|
git reset --h HEAD^
|
|
if [ -n "$MWT" ]; then
|
|
popd
|
|
fi
|
|
git tag -d $REV
|
|
git tag -d $REV-dev
|
|
if [ -n "$DWT" ]; then
|
|
pushd "$DWT"
|
|
else
|
|
if ! git checkout devel; then
|
|
echo "Cannot checkout devel"
|
|
exit 1
|
|
fi
|
|
fi
|
|
git reset --h HEAD^
|
|
if [ -n "$DWT" ]; then
|
|
popd
|
|
fi
|