From: Avery Pennarun Date: Thu, 24 Jun 2010 06:11:04 +0000 (-0400) Subject: Merge remote branch 'origin/master' X-Git-Tag: v1.7.11-rc0~176^2~13 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/8e770bd389f1810a4b1a53da51e0761ca1435f3a?ds=inline;hp=-c Merge remote branch 'origin/master' * origin/master: Fixed regression with splitting out new subtree Use 'git merge -Xsubtree' when git version >= 1.7.0. --- 8e770bd389f1810a4b1a53da51e0761ca1435f3a diff --combined git-subtree.sh index 935dfca7f3,a86cfd8b9f..a15d91ffb1 --- a/git-subtree.sh +++ b/git-subtree.sh @@@ -29,12 -29,8 +29,12 @@@ rejoin merge the new branch bac squash merge subtree changes as a single commit " eval $(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?) + +OPATH=$PATH PATH=$(git --exec-path):$PATH . git-sh-setup +PATH=$OPATH # apparently needed for some versions of msysgit + require_work_tree quiet= @@@ -257,6 -253,7 +257,7 @@@ find_existing_splits( if [ -n "$main" -a -n "$sub" ]; then debug " Prior: $main -> $sub" cache_set $main $sub + cache_set $sub $sub try_remove_previous "$main" try_remove_previous "$sub" fi @@@ -573,7 -570,9 +574,9 @@@ cmd_split( # ugly. is there no better way to tell if this is a subtree # vs. a mainline commit? Does it matter? if [ -z $tree ]; then - cache_set $rev $rev + if [ -n "$newparents" ]; then + cache_set $rev $rev + fi continue fi @@@ -638,11 -637,20 +641,20 @@@ cmd_merge( debug "New squash commit: $new" rev="$new" fi - - if [ -n "$message" ]; then - git merge -s subtree --message="$message" $rev + + version=$(git version) + if [ "$version" \< "git version 1.7" ]; then + if [ -n "$message" ]; then + git merge -s subtree --message="$message" $rev + else + git merge -s subtree $rev + fi else - git merge -s subtree $rev + if [ -n "$message" ]; then + git merge -Xsubtree="$prefix" --message="$message" $rev + else + git merge -Xsubtree="$prefix" $rev + fi fi }