@@ -137,11 +137,14 @@ jobs:
137
137
uses : peter-evans/create-pull-request@v7
138
138
with :
139
139
title : ' Update subtree/library to ${{ env.NEXT_TOOLCHAIN_DATE }}'
140
- body : |
140
+ body : >
141
141
This is an automated PR to update the subtree/library branch to the changes
142
- from ${{ env.CURRENT_TOOLCHAIN_DATE }} (${{ env.CURRENT_COMMIT_HASH }})
143
- to ${{ env.NEXT_TOOLCHAIN_DATE }} (${{ env.NEXT_COMMIT_HASH }}), inclusive.
144
- **Do not merge this PR using the merge queue. Instead, use the rebase strategy.**
142
+ from ${{ env.CURRENT_TOOLCHAIN_DATE }} (rust-lang/rust@${{ env.CURRENT_COMMIT_HASH }})
143
+ to ${{ env.NEXT_TOOLCHAIN_DATE }} (rust-lang/rust@${{ env.NEXT_COMMIT_HASH }}), inclusive.
144
+
145
+ **Review this PR as usual, but do not merge this PR using the GitHub web interface.
146
+ Instead, once it is approved, use `git push` to literally push the changes to `subtree/library`
147
+ without any rebase or merge.**
145
148
branch : update-subtree/library
146
149
delete-branch : true
147
150
base : subtree/library
@@ -156,15 +159,25 @@ jobs:
156
159
fi
157
160
git checkout main
158
161
162
+ # Tell git about the correct merge base to use, which is the subtree
163
+ # head that we last merged from.
164
+ PREV_SUBTREE_HEAD=$(git log --grep="^git-subtree-split:" | egrep '^[[:space:]]+git-subtree-split:' | awk '{print $2;exit}')
165
+ git replace --graft subtree/library ${PREV_SUBTREE_HEAD}
166
+ git replace --graft main ${PREV_SUBTREE_HEAD}
167
+
159
168
# This command may fail, which will require human intervention.
160
169
if ! git \
161
170
-c user.name=gitbot -c user.email=git@bot \
162
- subtree merge --prefix =library subtree/library --squash ; then
171
+ merge -Xsubtree =library subtree/library; then
163
172
echo "MERGE_CONFLICTS=yes" >> $GITHUB_ENV
164
173
git -c user.name=gitbot -c user.email=git@bot commit -a -m "Merge from $NEXT_COMMIT_HASH with conflicts"
165
174
else
166
175
echo "MERGE_CONFLICTS=no" >> $GITHUB_ENV
167
176
fi
177
+ git replace -d subtree/library
178
+ git replace -d main~1
179
+ NEW_SUBTREE_HEAD=$(git rev-parse subtree/library)
180
+ echo "NEW_SUBTREE_HEAD=${NEW_SUBTREE_HEAD}" >> $GITHUB_ENV
168
181
169
182
sed -i "s/^channel = \"nightly-.*\"/channel = \"nightly-${NEXT_TOOLCHAIN_DATE}\"/" rust-toolchain.toml
170
183
git -c user.name=gitbot -c user.email=git@bot \
@@ -178,11 +191,16 @@ jobs:
178
191
uses : peter-evans/create-pull-request@v7
179
192
with :
180
193
title : ' Merge subtree update for toolchain nightly-${{ env.NEXT_TOOLCHAIN_DATE }}'
181
- body : |
194
+ body : >
182
195
This is an automated PR to merge library subtree updates
183
- from ${{ env.CURRENT_TOOLCHAIN_DATE }} (${{ env.CURRENT_COMMIT_HASH }})
184
- to ${{ env.NEXT_TOOLCHAIN_DATE }} (${{ env.NEXT_COMMIT_HASH }}), inclusive.
196
+ from ${{ env.CURRENT_TOOLCHAIN_DATE }} (rust-lang/rust@ ${{ env.CURRENT_COMMIT_HASH }})
197
+ to ${{ env.NEXT_TOOLCHAIN_DATE }} (rust-lang/rust@ ${{ env.NEXT_COMMIT_HASH }}), inclusive.
185
198
This is a clean merge, no conflicts were detected.
199
+ **Do not remove or edit the following annotations:**
200
+
201
+ git-subtree-dir: library
202
+
203
+ git-subtree-split: ${{ env.NEW_SUBTREE_HEAD }}
186
204
branch : sync-${{ env.NEXT_TOOLCHAIN_DATE }}
187
205
delete-branch : true
188
206
base : main
@@ -193,12 +211,17 @@ jobs:
193
211
uses : peter-evans/create-pull-request@v7
194
212
with :
195
213
title : ' Merge subtree update for toolchain nightly-${{ env.NEXT_TOOLCHAIN_DATE }}'
196
- body : |
214
+ body : >
197
215
This is an automated PR to merge library subtree updates
198
- from ${{ env.CURRENT_TOOLCHAIN_DATE }} (${{ env.CURRENT_COMMIT_HASH }})
199
- to ${{ env.NEXT_TOOLCHAIN_DATE }} (${{ env.NEXT_COMMIT_HASH }}) (inclusive)
216
+ from ${{ env.CURRENT_TOOLCHAIN_DATE }} (rust-lang/rust@ ${{ env.CURRENT_COMMIT_HASH }})
217
+ to ${{ env.NEXT_TOOLCHAIN_DATE }} (rust-lang/rust@ ${{ env.NEXT_COMMIT_HASH }}) (inclusive)
200
218
into main. `git merge` resulted in conflicts, which require manual resolution.
201
219
Files were commited with merge conflict markers.
220
+ **Do not remove or edit the following annotations:**
221
+
222
+ git-subtree-dir: library
223
+
224
+ git-subtree-split: ${{ env.NEW_SUBTREE_HEAD }}
202
225
branch : sync-${{ env.NEXT_TOOLCHAIN_DATE }}
203
226
delete-branch : true
204
227
base : main
0 commit comments