summaryrefslogtreecommitdiff
path: root/contrib/examples/git-revert.sh
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2010-12-11 00:51:44 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-12-28 19:27:56 (GMT)
commit67ac1e1d57e45899a4dfd900a0249f48507584b5 (patch)
tree075c4365710ef649485d83a3ba7add0e04aaa4b1 /contrib/examples/git-revert.sh
parent73e7b2ef6c62b3ec345b557acb71a8da4798c70d (diff)
downloadgit-67ac1e1d57e45899a4dfd900a0249f48507584b5.zip
git-67ac1e1d57e45899a4dfd900a0249f48507584b5.tar.gz
git-67ac1e1d57e45899a4dfd900a0249f48507584b5.tar.bz2
cherry-pick/revert: add support for -X/--strategy-option
For example, this would allow cherry-picking or reverting patches from a piece of history with a different end-of-line style, like so: $ git revert -Xrenormalize old-problematic-commit Currently that is possible with manual use of merge-recursive but the cherry-pick/revert porcelain does not expose the functionality. While at it, document the existing support for --strategy. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib/examples/git-revert.sh')
-rwxr-xr-xcontrib/examples/git-revert.sh13
1 files changed, 12 insertions, 1 deletions
diff --git a/contrib/examples/git-revert.sh b/contrib/examples/git-revert.sh
index 60a05a8..6bf155c 100755
--- a/contrib/examples/git-revert.sh
+++ b/contrib/examples/git-revert.sh
@@ -26,6 +26,7 @@ require_work_tree
cd_to_toplevel
no_commit=
+xopt=
while case "$#" in 0) break ;; esac
do
case "$1" in
@@ -44,6 +45,16 @@ do
-x|--i-really-want-to-expose-my-private-commit-object-name)
replay=
;;
+ -X?*)
+ xopt="$xopt$(git rev-parse --sq-quote "--${1#-X}")"
+ ;;
+ --strategy-option=*)
+ xopt="$xopt$(git rev-parse --sq-quote "--${1#--strategy-option=}")"
+ ;;
+ -X|--strategy-option)
+ shift
+ xopt="$xopt$(git rev-parse --sq-quote "--$1")"
+ ;;
-*)
usage
;;
@@ -159,7 +170,7 @@ export GITHEAD_$head GITHEAD_$next
# and $prev on top of us (when reverting), or the change between
# $prev and $commit on top of us (when cherry-picking or replaying).
-git-merge-recursive $base -- $head $next &&
+eval "git merge-recursive $xopt $base -- $head $next" &&
result=$(git-write-tree 2>/dev/null) || {
mv -f .msg "$GIT_DIR/MERGE_MSG"
{