]> asedeno.scripts.mit.edu Git - git.git/commitdiff
Merge branch 'ml/rebase-x-strategy'
authorJunio C Hamano <gitster@pobox.com>
Wed, 18 Aug 2010 19:29:47 +0000 (12:29 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 18 Aug 2010 19:29:47 +0000 (12:29 -0700)
* ml/rebase-x-strategy:
  rebase: support -X to pass through strategy options

1  2 
git-rebase.sh

diff --combined git-rebase.sh
index 1b9ea48cd713d7f6b25e529d09743447635f6432,7d1c5c3861f6c3d760ff99a8c3b5a4287edddd34..7508463b30e7d1659ac9423a19d195e494600bd3
@@@ -44,6 -44,7 +44,7 @@@ To restore the original branch and sto
  "
  unset newbase
  strategy=recursive
+ strategy_opts=
  do_merge=
  dotest="$GIT_DIR"/rebase-merge
  prec=4
@@@ -112,7 -113,7 +113,7 @@@ call_merge () 
        then
                export GIT_MERGE_VERBOSITY=1
        fi
-       git-merge-$strategy "$cmt^" -- "$hd" "$cmt"
+       eval 'git-merge-$strategy' $strategy_opts '"$cmt^" -- "$hd" "$cmt"'
        rv=$?
        case "$rv" in
        0)
@@@ -208,7 -209,6 +209,7 @@@ d
                test -d "$dotest" -o -d "$GIT_DIR"/rebase-apply ||
                        die "No rebase in progress?"
  
 +              git update-index --ignore-submodules --refresh &&
                git diff-files --quiet --ignore-submodules || {
                        echo "You must edit all merge conflicts and then"
                        echo "mark them as resolved using git add"
        -M|-m|--m|--me|--mer|--merg|--merge)
                do_merge=t
                ;;
+       -X*|--strategy-option*)
+               case "$#,$1" in
+               1,-X|1,--strategy-option)
+                       usage ;;
+               *,-X|*,--strategy-option)
+                       newopt="$2"
+                       shift ;;
+               *,--strategy-option=*)
+                       newopt="$(expr " $1" : ' --strategy-option=\(.*\)')" ;;
+               *,-X*)
+                       newopt="$(expr " $1" : ' -X\(.*\)')" ;;
+               1,*)
+                       usage ;;
+               esac
+               strategy_opts="$strategy_opts $(git rev-parse --sq-quote "--$newopt")"
+               do_merge=t
+               if test -n "$strategy"
+               then
+                       strategy=recursive
+               fi
+               ;;
        -s=*|--s=*|--st=*|--str=*|--stra=*|--strat=*|--strate=*|\
                --strateg=*|--strategy=*|\
        -s|--s|--st|--str|--stra|--strat|--strate|--strateg|--strategy)
        --root)
                rebase_root=t
                ;;
 -      -f|--f|--fo|--for|--forc|force|--force-r|--force-re|--force-reb|--force-reba|--force-rebas|--force-rebase|--no-ff)
 +      -f|--f|--fo|--for|--forc|--force|--force-r|--force-re|--force-reb|--force-reba|--force-rebas|--force-rebase|--no-ff)
                force_rebase=t
                ;;
        --rerere-autoupdate|--no-rerere-autoupdate)
@@@ -544,7 -565,7 +566,7 @@@ f
  if test -z "$do_merge"
  then
        git format-patch -k --stdout --full-index --ignore-if-in-upstream \
 -              $root_flag "$revisions" |
 +              --no-renames $root_flag "$revisions" |
        git am $git_am_opt --rebasing --resolvemsg="$RESOLVEMSG" &&
        move_to_original_branch
        ret=$?