15
# this test script tries to document them. First, the following commit history
16
# is generated (the onelines are shown, time flows from left to right):
17
#
18
-# master1 - master2 - master3
18
+# topic_1 - topic_2 - topic_3
19
# \
20
-# README ---------------------- Add subproject master - master4 - files_subtree/master5
20
+# README ---------------------- Add subproject master - topic_4 - files_subtree/topic_5
21
#
22
# Where the merge moves the files master[123].t into the subdirectory
23
-# files_subtree/ and master4 as well as files_subtree/master5 add files to that
23
+# files_subtree/ and topic_4 as well as files_subtree/topic_5 add files to that
24
# directory directly.
25
#
26
# Then, in subsequent test cases, `git filter-branch` is used to distill just
28
# an empty commit is added on top. The pre-rebase commit history looks like
29
# this:
30
#
31
-# Add subproject master - master4 - files_subtree/master5 - Empty commit
31
+# Add subproject master - topic_4 - files_subtree/topic_5 - Empty commit
32
#
33
-# where the root commit adds three files: master1.t, master2.t and master3.t.
33
+# where the root commit adds three files: topic_1.t, topic_2.t and topic_3.t.
34
#
35
-# This commit history is then rebased onto `master3` with the
35
+# This commit history is then rebased onto `topic_3` with the
36
# `-Xsubtree=files_subtree` option in three different ways:
37
#
38
# 1. using `--preserve-merges`
43
test_commit README &&
44
45
git init files &&
46
- test_commit -C files master1 &&
47
- test_commit -C files master2 &&
48
- test_commit -C files master3 &&
46
+ test_commit -C files topic_1 &&
47
+ test_commit -C files topic_2 &&
48
+ test_commit -C files topic_3 &&
49
50
: perform subtree merge into files_subtree/ &&
51
git fetch files refs/heads/master:refs/heads/files-master &&
55
git commit -m "Add subproject master" &&
56
57
: add two extra commits to rebase &&
58
- test_commit -C files_subtree master4 &&
59
- test_commit files_subtree/master5 &&
58
+ test_commit -C files_subtree topic_4 &&
59
+ test_commit files_subtree/topic_5 &&
60
61
git checkout -b to-rebase &&
62
git fast-export --no-data HEAD -- files_subtree/ |
66
git commit -m "Empty commit" --allow-empty
67
'
68
69
-# FAILURE: Does not preserve master4.
69
+# FAILURE: Does not preserve topic_4.
70
test_expect_failure REBASE_P 'Rebase -Xsubtree --preserve-merges --onto commit' '
71
reset_rebase &&
72
git checkout -b rebase-preserve-merges to-rebase &&
73
git rebase -Xsubtree=files_subtree --preserve-merges --onto files-master master &&
74
- verbose test "$(commit_message HEAD~)" = "master4" &&
75
- verbose test "$(commit_message HEAD)" = "files_subtree/master5"
74
+ verbose test "$(commit_message HEAD~)" = "topic_4" &&
75
+ verbose test "$(commit_message HEAD)" = "files_subtree/topic_5"
76
'
77
78
-# FAILURE: Does not preserve master4.
78
+# FAILURE: Does not preserve topic_4.
79
test_expect_failure REBASE_P 'Rebase -Xsubtree --keep-empty --preserve-merges --onto commit' '
80
reset_rebase &&
81
git checkout -b rebase-keep-empty to-rebase &&
82
git rebase -Xsubtree=files_subtree --keep-empty --preserve-merges --onto files-master master &&
83
- verbose test "$(commit_message HEAD~2)" = "master4" &&
84
- verbose test "$(commit_message HEAD~)" = "files_subtree/master5" &&
83
+ verbose test "$(commit_message HEAD~2)" = "topic_4" &&
84
+ verbose test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
85
verbose test "$(commit_message HEAD)" = "Empty commit"
86
'
87
91
test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --onto files-master master &&
92
: first pick results in no changes &&
93
git rebase --skip &&
94
- verbose test "$(commit_message HEAD~2)" = "master4" &&
95
- verbose test "$(commit_message HEAD~)" = "files_subtree/master5" &&
94
+ verbose test "$(commit_message HEAD~2)" = "topic_4" &&
95
+ verbose test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
96
verbose test "$(commit_message HEAD)" = "Empty commit"
97
'
98
102
test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --rebase-merges --onto files-master --root &&
103
: first pick results in no changes &&
104
git rebase --skip &&
105
- verbose test "$(commit_message HEAD~2)" = "master4" &&
106
- verbose test "$(commit_message HEAD~)" = "files_subtree/master5" &&
105
+ verbose test "$(commit_message HEAD~2)" = "topic_4" &&
106
+ verbose test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
107
verbose test "$(commit_message HEAD)" = "Empty commit"
108
'
109