diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-08-10 11:55:26 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-08-10 11:55:26 -0700 |
commit | 366d2d5f485c7d0b288520c4f7249e0380c5a9b3 (patch) | |
tree | a89ef42b997844230789f644079c8d6ff9ff824a | |
parent | d9d7ab3b1d5a1d1e24b2249e612bab41819b6188 (diff) | |
parent | 0f12c7d4d175bb0566208213b1b340b6794f305c (diff) | |
download | git-366d2d5f485c7d0b288520c4f7249e0380c5a9b3.tar.gz git-366d2d5f485c7d0b288520c4f7249e0380c5a9b3.tar.xz |
Merge branch 'da/subtree-2.9-regression' into maint
"git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.
* da/subtree-2.9-regression:
subtree: fix "git subtree split --rejoin"
t7900-subtree.sh: fix quoting and broken && chains
-rwxr-xr-x | contrib/subtree/git-subtree.sh | 1 | ||||
-rwxr-xr-x | contrib/subtree/t/t7900-subtree.sh | 32 |
2 files changed, 25 insertions, 8 deletions
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh index 7a39b30ad..b567eaeff 100755 --- a/contrib/subtree/git-subtree.sh +++ b/contrib/subtree/git-subtree.sh @@ -662,6 +662,7 @@ cmd_split() debug "Merging split branch into HEAD..." latest_old=$(cache_get latest_old) git merge -s ours \ + --allow-unrelated-histories \ -m "$(rejoin_msg "$dir" $latest_old $latest_new)" \ $latest_new >&2 || exit $? fi diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh index 3bf96a9bb..9751cfe9e 100755 --- a/contrib/subtree/t/t7900-subtree.sh +++ b/contrib/subtree/t/t7900-subtree.sh @@ -16,16 +16,16 @@ export TEST_DIRECTORY subtree_test_create_repo() { - test_create_repo "$1" + test_create_repo "$1" && ( - cd $1 + cd "$1" && git config log.date relative ) } create() { - echo "$1" >"$1" + echo "$1" >"$1" && git add "$1" } @@ -71,12 +71,12 @@ join_commits() } test_create_commit() ( - repo=$1 - commit=$2 - cd "$repo" - mkdir -p $(dirname "$commit") \ + repo=$1 && + commit=$2 && + cd "$repo" && + mkdir -p "$(dirname "$commit")" \ || error "Could not create directory for commit" - echo "$commit" >"$commit" + echo "$commit" >"$commit" && git add "$commit" || error "Could not add commit" git commit -m "$commit" || error "Could not commit" ) @@ -347,6 +347,22 @@ test_expect_success 'split sub dir/ with --rejoin' ' ' next_test +test_expect_success 'split sub dir/ with --rejoin from scratch' ' + subtree_test_create_repo "$subtree_test_count" && + test_create_commit "$subtree_test_count" main1 && + ( + cd "$subtree_test_count" && + mkdir "sub dir" && + echo file >"sub dir"/file && + git add "sub dir/file" && + git commit -m"sub dir file" && + split_hash=$(git subtree split --prefix="sub dir" --rejoin) && + git subtree split --prefix="sub dir" --rejoin && + check_equal "$(last_commit_message)" "Split '\''sub dir/'\'' into commit '\''$split_hash'\''" + ) + ' + +next_test test_expect_success 'split sub dir/ with --rejoin and --message' ' subtree_test_create_repo "$subtree_test_count" && subtree_test_create_repo "$subtree_test_count/sub proj" && |