Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(584)

Side by Side Diff: tools/llvm/merge-tool.sh

Issue 7524023: New LLVM merging bots (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/llvm/hgrc ('k') | tools/llvm/utman.sh » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/bash 1 #!/bin/bash
2 # Copyright 2010 The Native Client Authors. All rights reserved. 2 # Copyright 2011 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can 3 # Use of this source code is governed by a BSD-style license that can be
4 # be found in the LICENSE file. 4 # found in the LICENSE file.
5 # 5 #
6 ###################################################################### 6 ######################################################################
7 # 7 #
8 # This script facilitates merging changes from the LLVM subversion 8 # This script facilitates merging changes from the LLVM subversion
9 # repository into the PNaCl Mercurial repository. 9 # repository into the PNaCl Mercurial repository.
10 # 10 #
11 ###################################################################### 11 ######################################################################
12 set -o nounset 12 set -o nounset
13 set -o errexit 13 set -o errexit
14 14
15 # Make sure this script is run from the right place 15 # Make sure this script is run from the right place
16 if [[ $(basename $(pwd)) != "native_client" ]] ; then 16 if [[ $(basename $(pwd)) != "native_client" ]] ; then
17 echo "ERROR: run this script from the native_client/ dir" 17 echo "ERROR: run this script from the native_client/ dir"
18 exit -1 18 exit -1
19 fi 19 fi
20 20
21 source tools/llvm/common-tools.sh 21 source tools/llvm/common-tools.sh
22 readonly NACL_ROOT="$(pwd)"
23 SetScriptPath "${NACL_ROOT}/tools/llvm/merge-tool.sh"
24 SetLogDirectory "${NACL_ROOT}/toolchain/hg-log"
25 readonly SCRIPT_PATH="$0"
22 ###################################################################### 26 ######################################################################
23 27
24 # Location of the mercurial repositories 28 # Location of the mercurial repositories
25 # These should match the values in utman.sh 29 # These should match the values in utman.sh
26 readonly TC_SRC="$(pwd)/hg" 30 readonly TC_SRC="$(pwd)/hg"
27 readonly TC_SRC_LLVM="${TC_SRC}/llvm" 31 readonly TC_SRC_UPSTREAM="${TC_SRC}/upstream"
28 readonly TC_SRC_LLVM_GCC="${TC_SRC}/llvm-gcc"
29 32
30 # Location of the upstream LLVM repository 33 readonly PREDIFF="${TC_SRC}/prediff"
31 readonly MASTER_LLVM_BASE="http://llvm.org/svn/llvm-project" 34 readonly POSTDIFF="${TC_SRC}/postdiff"
32 readonly MASTER_LLVM_URL="${MASTER_LLVM_BASE}/llvm/trunk"
33 readonly MASTER_LLVM_GCC_URL="${MASTER_LLVM_BASE}/llvm-gcc-4.2/trunk"
34 35
35 readonly MASTER_LLVM="${TC_SRC}/master-llvm" 36 # These must be specified in the environment
36 readonly MASTER_LLVM_GCC="${TC_SRC}/master-llvm-gcc" 37 readonly MASTER_LLVM=${MASTER_LLVM:-}
jvoung - send to chromium... 2011/07/29 00:38:32 So, on the bots these values are set in .bashrc or
pdox 2011/07/29 00:59:58 They are the upstream SVN directories, not part of
38 readonly MASTER_LLVM_GCC=${MASTER_LLVM_GCC:-}
37 39
40 # TODO(pdox): Refactor repository checkout into a separate script
41 # so that we don't need to invoke utman.
42 utman() {
43 UTMAN_UPSTREAM=true "${NACL_ROOT}"/tools/llvm/utman.sh "$@"
44 }
45 hg-checkout-upstream() { utman hg-checkout-upstream "$@" ; }
38 46
39 BASEDIR="$(pwd)" 47 check-svn-repos() {
40 utman() { 48 if [ -z "${MASTER_LLVM}" ] ||
41 pushd "${BASEDIR}" > /dev/null 49 [ -z "${MASTER_LLVM_GCC}" ]; then
42 tools/llvm/utman.sh "$@" 50 Fatal "You must set environmental variables MASTER_LLVM and MASTER_LLVM_GCC"
43 popd > /dev/null 51 fi
44 } 52 }
45 hg-pull-llvm() { utman hg-pull-llvm "$@" ; }
46 hg-pull-llvm-gcc() { utman hg-pull-llvm-gcc "$@" ; }
47 hg-checkout-llvm() { utman hg-checkout-llvm "$@" ; }
48 hg-checkout-llvm-gcc() { utman hg-checkout-llvm-gcc "$@" ; }
49 53
50 #@ all - Do LLVM and LLVM-GCC merge (all steps) 54 #@ auto - Non-interactive merge
51 all() { 55 auto() {
56 INTERACTIVE_MERGE=false
57 export DISPLAY=""
58 merge-all
59 }
60
61 #@ manual - Interactive merge
62 manual() {
63 INTERACTIVE_MERGE=true
64 merge-all
65 }
66
67 #+ merge-all - Merge all the things
68 merge-all() {
69 check-svn-repos
70
71 hg-checkout-upstream
52 assert-clean 72 assert-clean
73 setup-hgrc
53 74
54 checkout-all 75 MERGE_REVISION=$(get-merge-revision)
55 choose-revision 76 Banner "MERGE REVISION: ${MERGE_REVISION}"
56 77
57 update-llvm-gcc-vendor 78 generate-pre-diff
58 merge-llvm-gcc
59 diff-diff-llvm-gcc
60 79
61 update-llvm-vendor 80 commit-vendor
62 merge-llvm 81 hg-merge
63 diff-diff-llvm 82
83 generate-post-diff
84
85 if ${INTERACTIVE_MERGE}; then
86 vim-diff-diff
87 else
88 dump-diff-diff
89 fi
64 90
65 echo "********************************************************************" 91 echo "********************************************************************"
66 echo "The llvm and llvm-gcc working directories are now in a merged state." 92 echo "The llvm and llvm-gcc working directories are now in a merged state."
67 echo "Before you commit and push, you should build PNaCl and run all tests." 93 echo "Before you commit and push, you should build PNaCl and run all tests."
68 echo "For example:"
69 echo " tools/llvm/utman.sh clean"
70 echo " tools/llvm/utman.sh all"
71 echo " tools/llvm/utman.sh test-all"
72 echo " tests/spec2k/bot_spec.sh 2 <spec-dir>"
73 echo " tests/spec2k/bot_spec.sh 3 <spec-dir>"
74 echo "" 94 echo ""
75 echo "Expect lots of bugs. You may need to fix and rebuild several times." 95 echo "Expect lots of bugs. You may need to fix and rebuild several times."
76 echo "When you are confident all tests are passing, you can commit and push" 96 echo "When you are confident all tests are passing, you can commit and push"
77 echo "the merged working directories with:" 97 echo "the merged working directory with:"
78 echo " tools/llvm/merge-tool.sh final-commit" 98 echo " tools/llvm/merge-tool.sh final-commit"
79 echo "********************************************************************" 99 echo "********************************************************************"
80 } 100 }
81 101
102 setup-hgrc() {
103 cp "${NACL_ROOT}/tools/llvm/hgrc" \
104 "${TC_SRC_UPSTREAM}/.hg/hgrc"
105 }
106
82 assert-clean() { 107 assert-clean() {
83 if [ -d "${MASTER_LLVM}" ]; then 108 svn-assert-no-changes "${MASTER_LLVM}"
84 svn-assert-no-changes "${MASTER_LLVM}" 109 svn-assert-no-changes "${MASTER_LLVM_GCC}"
85 fi
86 110
87 if [ -d "${MASTER_LLVM_GCC}" ]; then 111 hg-assert-no-changes "${TC_SRC_UPSTREAM}"
88 svn-assert-no-changes "${MASTER_LLVM_GCC}" 112 hg-assert-no-outgoing "${TC_SRC_UPSTREAM}"
89 fi
90
91 if [ -d "${TC_SRC_LLVM}" ]; then
92 hg-assert-no-changes "${TC_SRC_LLVM}"
93 hg-assert-no-outgoing "${TC_SRC_LLVM}"
94 fi
95
96 if [ -d "${TC_SRC_LLVM_GCC}" ]; then
97 hg-assert-no-changes "${TC_SRC_LLVM_GCC}"
98 hg-assert-no-outgoing "${TC_SRC_LLVM_GCC}"
99 fi
100 } 113 }
101 114
102 #@ clean - Clean/revert mercurial repositories 115 #@ clean - Clean/revert mercurial repositories
103 clean() { 116 clean() {
104 StepBanner "CLEAN - Cleaning repositories" 117 StepBanner "CLEAN - Cleaning repositories"
105 Banner "WARNING: All local changes to hg/llvm and hg/llvm-gcc will be erased" 118 clean-upstream
106 if ! confirm-yes "Are you sure you want to do this?" ; then
107 echo "Cancelled"
108 exit -1
109 fi
110 if ! confirm-yes "Are you really, really sure you want do this?" ; then
111 echo "Cancelled"
112 exit -1
113 fi
114 clean-llvm
115 clean-llvm-gcc
116 } 119 }
117 120
118 #+ clean-llvm 121 #+ clean-upstream
119 clean-llvm() { 122 clean-upstream() {
120 StepBanner "CLEAN" "Cleaning hg llvm repository" 123 StepBanner "CLEAN" "Cleaning hg upstream repository"
121 rm -rf "${TC_SRC_LLVM}" 124 rm -rf "${TC_SRC_UPSTREAM}"
122 } 125 }
123 126
124 #+ clean-llvm-gcc 127 #+ get-merge-revision - Get the current SVN revision
125 clean-llvm-gcc() { 128 get-merge-revision() {
126 StepBanner "CLEAN" "Cleaning hg llvm-gcc repository"
127 rm -rf "${TC_SRC_LLVM_GCC}"
128 }
129
130 #@ checkout-all - Checkout repositories
131 checkout-all() {
132 StepBanner "checkout-all - Checkout all repositories"
133
134 # Checkout LLVM repositories
135 StepBanner "checkout-all" "Checking out SVN repositories"
136 svn-checkout "${MASTER_LLVM_URL}" "${MASTER_LLVM}"
137 svn-checkout "${MASTER_LLVM_GCC_URL}" "${MASTER_LLVM_GCC}"
138
139 # Checkout the hg repositories
140 StepBanner "checkout-all" "Checking out HG repositories"
141 hg-checkout-llvm
142 hg-checkout-llvm-gcc
143 }
144
145 #+ get-revision - Get the current SVN revision
146 get-revision() {
147 local llvm_rev=$(svn-get-revision "${MASTER_LLVM}") 129 local llvm_rev=$(svn-get-revision "${MASTER_LLVM}")
148 local llvm_gcc_rev=$(svn-get-revision "${MASTER_LLVM_GCC}") 130 local llvm_gcc_rev=$(svn-get-revision "${MASTER_LLVM_GCC}")
149 131
150 if [ "${llvm_rev}" -ne "${llvm_gcc_rev}" ]; then 132 if [ "${llvm_rev}" -ne "${llvm_gcc_rev}" ]; then
151 echo -n "Error: Unexpected mismatch between " 1>&2 133 echo -n "Error: Unexpected mismatch between " 1>&2
152 echo "SVN revisions of llvm and llvm-gcc" 1>&2 134 echo "SVN revisions of llvm and llvm-gcc" 1>&2
153 exit -1 135 exit -1
154 fi 136 fi
155 echo "${llvm_rev}" 137 echo "${llvm_rev}"
156 } 138 }
157 139
158 #@ choose-revision - Choose LLVM revision 140 #+ generate-pre-diff - Generate vendor:pnacl-sfi diff prior to merge
159 choose-revision() { 141 generate-pre-diff() {
160 StepBanner "choose-revision - Choose LLVM Revision" 142 spushd "${TC_SRC_UPSTREAM}"
161 echo 143 hg diff -r vendor:pnacl-sfi &> "${PREDIFF}"
162 echo "Go to http://google1.osuosl.org:8011/ for LLVM build status" 144 spopd
163 echo
164 local rev
165 while true; do
166 echo -n "Please enter an LLVM revision (or 'tip'): "
167 read rev
168 if [[ "$rev" == "tip" ]]; then
169 break
170 fi
171 if [[ "$rev" =~ ^[0-9]+$ ]]; then
172 break
173 fi
174 echo "Invalid input."
175 done
176
177 # Update the SVN repositories to ${rev}
178 StepBanner "choose-revision" "Updating LLVM repository to ${rev}"
179 svn-update "${MASTER_LLVM}" "${rev}"
180 svn-update "${MASTER_LLVM_GCC}" "${rev}"
181 } 145 }
182 146
183 #@ update-llvm-vendor - Apply update to vendor branch for llvm 147 #+ generate-post-diff - Generate vendor:pnacl-sfi diff after merge
184 update-llvm-vendor() { 148 generate-post-diff() {
185 local fnid="update-llvm-vendor" 149 spushd "${TC_SRC_UPSTREAM}"
186 StepBanner "${fnid} - Freshen hg 'vendor' branch" 150 hg diff -r vendor &> "${POSTDIFF}"
151 spopd
152 }
187 153
188 StepBanner "${fnid}" "Verifying repository state" 154 #@ commit-vendor - Apply new commit to vendor branch
189 svn-assert-no-changes "${MASTER_LLVM}" 155 commit-vendor() {
190 hg-assert-no-changes "${TC_SRC_LLVM}" 156 local stepid="commit-vendor"
191 hg-assert-no-outgoing "${TC_SRC_LLVM}" 157 StepBanner "Committing vendor"
192 158
193 StepBanner "${fnid}" "hg pull (llvm)" 159 StepBanner "${stepid}" "Switching to hg vendor branch"
194 hg-pull-llvm
195 160
196 StepBanner "${fnid}" "switch to hg branch vendor (llvm)" 161 hg-update "${TC_SRC_UPSTREAM}" vendor
197 hg-update "${TC_SRC_LLVM}" vendor
198 StepBanner "${fnid}" "Delete existing vendor source"
199 rm -rf "${TC_SRC_LLVM}/llvm-trunk"
200 162
201 StepBanner "${fnid}" "Exporting svn to hg (llvm)" 163 StepBanner "${stepid}" "Exporting svn to hg"
202 RunWithLog "${fnid}" \ 164 rm -rf "${TC_SRC_UPSTREAM}/llvm"
203 svn export "${MASTER_LLVM}" "${TC_SRC_LLVM}/llvm-trunk" 165 svn export "${MASTER_LLVM}" "${TC_SRC_UPSTREAM}/llvm"
204 166
205 StepBanner "${fnid}" "Updating hg file list (llvm)" 167 rm -rf "${TC_SRC_UPSTREAM}/llvm-gcc"
206 spushd "${TC_SRC_LLVM}" 168 svn export "${MASTER_LLVM_GCC}" "${TC_SRC_UPSTREAM}/llvm-gcc"
207 RunWithLog "${fnid}" hg add 169
208 RunWithLog "${fnid}" hg remove -A 170 StepBanner "Updating hg file list"
jvoung - send to chromium... 2011/07/29 00:38:32 ${stepid} ?
pdox 2011/07/29 00:59:58 Done.
171 spushd "${TC_SRC_UPSTREAM}"
172 hg add
173 hg remove -A
209 spopd 174 spopd
210 175
211 hg-status-check LLVM "${TC_SRC_LLVM}" 176 StepBanner "${stepid}" "Committing vendor branch"
212 177 hg-commit "${TC_SRC_UPSTREAM}" "Updating vendor to r${MERGE_REVISION}"
jvoung - send to chromium... 2011/07/29 00:38:32 Might be better to just $(get-merge-revision) wher
pdox 2011/07/29 00:59:58 Technically, I always want to run get-merge-revisi
213 local rev=$(get-revision)
214 StepBanner "${fnid} - Commit hg 'vendor' branch (llvm)"
215 hg-commit "${TC_SRC_LLVM}" "Updating vendor to r${rev}"
216 } 178 }
217 179
218 #@ update-llvm-gcc-vendor - Apply update to vendor branch for llvm-gcc 180 #@ hg-merge - Merge and resolve conflicts for llvm
219 update-llvm-gcc-vendor() { 181 hg-merge() {
220 local fnid="update-llvm-gcc-vendor" 182 StepBanner "hg-merge - Merge and resolve conflicts"
221 StepBanner "${fnid}" "hg pull (llvm-gcc)"
222 hg-pull-llvm-gcc
223 183
224 StepBanner "${fnid}" "Verifying repository state" 184 StepBanner "hg-merge" "Switching to pnacl-sfi branch"
225 svn-assert-no-changes "${MASTER_LLVM_GCC}" 185 hg-update "${TC_SRC_UPSTREAM}" pnacl-sfi
226 hg-assert-no-changes "${TC_SRC_LLVM_GCC}" 186 hg-assert-no-changes "${TC_SRC_UPSTREAM}"
227 hg-assert-no-outgoing "${TC_SRC_LLVM_GCC}"
228 187
229 StepBanner "${fnid}" "switch to hg branch vendor (llvm-gcc)" 188 StepBanner "hg-merge" "Merging vendor into pnacl-sfi"
230 hg-update "${TC_SRC_LLVM_GCC}" vendor 189 spushd "${TC_SRC_UPSTREAM}"
231
232 StepBanner "${fnid}" "Delete existing vendor source"
233 rm -rf "${TC_SRC_LLVM_GCC}/llvm-gcc-4.2"
234
235 StepBanner "${fnid}" "Exporting svn to hg (llvm-gcc)"
236 RunWithLog "${fnid}" \
237 svn export "${MASTER_LLVM_GCC}" "${TC_SRC_LLVM_GCC}/llvm-gcc-4.2"
238
239 StepBanner "${fnid}" "Updating hg file list (llvm-gcc)"
240 spushd "${TC_SRC_LLVM_GCC}"
241 RunWithLog "${fnid}" hg add
242 RunWithLog "${fnid}" hg remove -A
243 spopd
244
245 hg-status-check LLVM-GCC "${TC_SRC_LLVM_GCC}"
246
247 local rev=$(get-revision)
248 StepBanner "${fnid} - Commit hg 'vendor' branch (llvm-gcc)"
249 hg-commit "${TC_SRC_LLVM_GCC}" "Updating vendor to r${rev}"
250 }
251
252 #@ merge-llvm-gcc - Merge and resolve conflicts for llvm-gcc
253 merge-llvm-gcc() {
254 StepBanner "merge-llvm-gcc - Merge and resolve conflicts"
255
256 StepBanner "merge-llvm-gcc" "Switch to pnacl-sfi branch"
257 hg-assert-no-changes "${TC_SRC_LLVM_GCC}"
258 hg-update "${TC_SRC_LLVM_GCC}" pnacl-sfi
259
260 StepBanner "merge-llvm-gcc" "Merging vendor into pnacl-sfi"
261 spushd "${TC_SRC_LLVM_GCC}"
262 hg merge -r vendor 190 hg merge -r vendor
263 spopd 191 spopd
264 } 192 }
265 193
266 #@ merge-llvm - Merge and resolve conflicts for llvm 194 #@ vim-diff-diff - Review diff-diff using vim
267 merge-llvm() { 195 vim-diff-diff() {
268 StepBanner "merge-llvm - Merge and resolve conflicts" 196 vimdiff "${PREDIFF}" "${POSTDIFF}"
269
270 StepBanner "merge-llvm" "Switch to pnacl-sfi branch"
271 hg-assert-no-changes "${TC_SRC_LLVM}"
272 hg-update "${TC_SRC_LLVM}" pnacl-sfi
273
274 StepBanner "merge-llvm" "Merging vendor into pnacl-sfi"
275 spushd "${TC_SRC_LLVM}"
276 hg merge -r vendor
277 spopd
278 } 197 }
279 198
280 #@ diff-diff-llvm - Review diff-diff 199 #@ dump-diff-diff - Review diff-diff
281 diff-diff-llvm() { 200 dump-diff-diff() {
282 ( 201 diff "${PREDIFF}" "${POSTDIFF}"
283 echo "Type 'q' to exit less"
284 echo "---------------------------------------------------"
285 tools/llvm/diff-diff.py "${TC_SRC_LLVM}"
286 ) 2>&1 | less
287
288 if ! confirm-yes "Does the diff-diff for LLVM look correct"; then
289 echo "Cancelling."
290 echo "hg repositories remain in uncommitted state."
291 echo "Use 'tools/llvm/merge-tool.sh clean' to clean them"
292 exit -1
293 fi
294 }
295
296 #@ diff-diff-llvm-gcc - Review diff-diff
297 diff-diff-llvm-gcc() {
298 (
299 echo "Type 'q' to exit less"
300 echo "---------------------------------------------------"
301 tools/llvm/diff-diff.py "${TC_SRC_LLVM_GCC}"
302 ) 2>&1 | less
303
304 if ! confirm-yes "Does the diff-diff for LLVM-GCC look correct"; then
305 echo "Cancelling."
306 echo "hg repositories remain in uncommitted state."
307 echo "Use 'tools/llvm/merge-tool.sh clean' to clean them"
308 exit -1
309 fi
310 } 202 }
311 203
312 final-commit() { 204 final-commit() {
205 check-svn-repos
206 MERGE_REVISION=$(get-merge-revision)
207
313 StepBanner "final-commit" "Committing and pushing merge" 208 StepBanner "final-commit" "Committing and pushing merge"
jvoung - send to chromium... 2011/07/29 00:38:32 Could print the MERGE_REVISION somewhere before al
pdox 2011/07/29 00:59:58 done, I think? Added the banner to check-svn-repos
314 hg-assert-is-merge "${TC_SRC_LLVM}" 209 hg-assert-is-merge "${TC_SRC_UPSTREAM}"
315 hg-assert-is-merge "${TC_SRC_LLVM_GCC}" 210 hg-assert-branch "${TC_SRC_UPSTREAM}" pnacl-sfi
316 hg-assert-branch "${TC_SRC_LLVM}" pnacl-sfi
317 hg-assert-branch "${TC_SRC_LLVM_GCC}" pnacl-sfi
318 211
319 Banner "CAUTION: This step will COMMIT and PUSH changes to the repository." 212 if ${INTERACTIVE_MERGE}; then
320 echo 213 Banner "CAUTION: This step will COMMIT and PUSH changes to the repository."
321 if ! confirm-yes "Is the merged working directory passing all tests?" ; then 214 echo
322 echo "Cancelled" 215 if ! confirm-yes "Is the merged working directory passing all tests?" ; then
323 exit -1 216 echo "Cancelled"
324 fi 217 exit -1
325 if ! confirm-yes "Are you really sure you want to do this?" ; then 218 fi
326 echo "Cancelled" 219 if ! confirm-yes "Are you really sure you want to do this?" ; then
327 exit -1 220 echo "Cancelled"
221 exit -1
222 fi
328 fi 223 fi
329 224
330 local rev=$(get-revision) 225 StepBanner "final-commit" "Committing pnacl-sfi branch"
226 hg-commit "${TC_SRC_UPSTREAM}" "Merged up to r${MERGE_REVISION}"
331 227
332 StepBanner "final-commit - Committing hg pnacl-sfi branch (llvm)" 228 StepBanner "final-commit" "Pushing to hg/upstream"
333 hg-commit "${TC_SRC_LLVM}" "Merged up to r${rev}" 229 hg-push "${TC_SRC_UPSTREAM}"
334
335 StepBanner "final-commit - Committing hg pnacl-sfi branch (llvm-gcc)"
336 hg-commit "${TC_SRC_LLVM_GCC}" "Merged up to r${rev}"
337
338 StepBanner "final-commit - Pushing (llvm)"
339 hg-push "${TC_SRC_LLVM}"
340
341 StepBanner "final-commit - Pushing (llvm-gcc)"
342 hg-push "${TC_SRC_LLVM_GCC}"
343 }
344
345 #+ hg-status-check <name> <repo> - Allow the user to check hg status for probl ems
346 hg-status-check() {
347 local name="$1"
348 local repo="$2"
349 spushd "${repo}"
350 (
351 echo "Please verify hg status for ${name}:"
352 echo "Hit q to exit 'less'"
353 echo "---------------------------------------------------"
354 hg status
355 echo "---------------------------------------------------"
356 ) 2>&1 | less
357 spopd
358
359 if ! confirm-yes "Does the status for ${name} look correct"; then
360 echo "Cancelling vendor update."
361 echo "hg repositories remain in uncommitted state."
362 echo "Use 'tools/llvm/merge-tool.sh clean' to clean them"
363 exit -1
364 fi
365 } 230 }
366 231
367 #@ help - Usage information. 232 #@ help - Usage information.
368 help() { 233 help() {
369 Usage 234 Usage
370 } 235 }
371 236
372 [ $# = 0 ] && set -- help # Avoid reference to undefined $1. 237 [ $# = 0 ] && set -- help # Avoid reference to undefined $1.
373 if [ "$(type -t $1)" != "function" ]; then 238 if [ "$(type -t $1)" != "function" ]; then
374 echo "ERROR: unknown function '$1'." >&2 239 echo "ERROR: unknown function '$1'." >&2
375 echo "For help, try:" 240 echo "For help, try:"
376 echo " $0 help" 241 echo " $0 help"
377 exit 1 242 exit 1
378 fi 243 fi
379 244
380 "$@" 245 "$@"
OLDNEW
« no previous file with comments | « tools/llvm/hgrc ('k') | tools/llvm/utman.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698