@@ -46,7 +46,8 @@ unset newbase
46
46
strategy=recursive
47
47
strategy_opts=
48
48
do_merge=
49
- dotest=" $GIT_DIR " /rebase-merge
49
+ merge_dir=" $GIT_DIR " /rebase-merge
50
+ apply_dir=" $GIT_DIR " /rebase-apply
50
51
prec=4
51
52
verbose=
52
53
diffstat=
@@ -58,7 +59,7 @@ allow_rerere_autoupdate=
58
59
59
60
continue_merge () {
60
61
test -n " $prev_head " || die " prev_head must be defined"
61
- test -d " $dotest " || die " $dotest directory does not exist"
62
+ test -d " $merge_dir " || die " $merge_dir directory does not exist"
62
63
63
64
unmerged=$( git ls-files -u)
64
65
if test -n " $unmerged "
@@ -68,7 +69,7 @@ continue_merge () {
68
69
die " $RESOLVEMSG "
69
70
fi
70
71
71
- cmt=` cat " $dotest /current" `
72
+ cmt=` cat " $merge_dir /current" `
72
73
if ! git diff-index --quiet --ignore-submodules HEAD --
73
74
then
74
75
if ! git commit --no-verify -C " $cmt "
@@ -81,7 +82,7 @@ continue_merge () {
81
82
then
82
83
printf " Committed: %0${prec} d " $msgnum
83
84
fi
84
- echo " $cmt $( git rev-parse HEAD^0) " >> " $dotest /rewritten"
85
+ echo " $cmt $( git rev-parse HEAD^0) " >> " $merge_dir /rewritten"
85
86
else
86
87
if test -z " $GIT_QUIET "
87
88
then
@@ -93,22 +94,22 @@ continue_merge () {
93
94
94
95
prev_head=` git rev-parse HEAD^0`
95
96
# save the resulting commit so we can read-tree on it later
96
- echo " $prev_head " > " $dotest /prev_head"
97
+ echo " $prev_head " > " $merge_dir /prev_head"
97
98
98
99
# onto the next patch:
99
100
msgnum=$(( $msgnum + 1 ))
100
- echo " $msgnum " > " $dotest /msgnum"
101
+ echo " $msgnum " > " $merge_dir /msgnum"
101
102
}
102
103
103
104
call_merge () {
104
- cmt=" $( cat " $dotest /cmt.$1 " ) "
105
- echo " $cmt " > " $dotest /current"
105
+ cmt=" $( cat " $merge_dir /cmt.$1 " ) "
106
+ echo " $cmt " > " $merge_dir /current"
106
107
hd=$( git rev-parse --verify HEAD)
107
108
cmt_name=$( git symbolic-ref HEAD 2> /dev/null || echo HEAD)
108
- msgnum=$( cat " $dotest /msgnum" )
109
- end=$( cat " $dotest /end" )
109
+ msgnum=$( cat " $merge_dir /msgnum" )
110
+ end=$( cat " $merge_dir /end" )
110
111
eval GITHEAD_$cmt =' "${cmt_name##refs/heads/}~$(($end - $msgnum))"'
111
- eval GITHEAD_$hd =' $(cat "$dotest /onto_name")'
112
+ eval GITHEAD_$hd =' $(cat "$merge_dir /onto_name")'
112
113
export GITHEAD_$cmt GITHEAD_$hd
113
114
if test -n " $GIT_QUIET "
114
115
then
@@ -138,9 +139,9 @@ call_merge () {
138
139
139
140
move_to_original_branch () {
140
141
test -z " $head_name " &&
141
- head_name=" $( cat " $dotest " /head-name) " &&
142
- onto=" $( cat " $dotest " /onto) " &&
143
- orig_head=" $( cat " $dotest " /orig-head) "
142
+ head_name=" $( cat " $merge_dir " /head-name) " &&
143
+ onto=" $( cat " $merge_dir " /onto) " &&
144
+ orig_head=" $( cat " $merge_dir " /orig-head) "
144
145
case " $head_name " in
145
146
refs/* )
146
147
message=" rebase finished: $head_name onto $onto "
@@ -154,12 +155,12 @@ move_to_original_branch () {
154
155
155
156
finish_rb_merge () {
156
157
move_to_original_branch
157
- git notes copy --for-rewrite=rebase < " $dotest " /rewritten
158
+ git notes copy --for-rewrite=rebase < " $merge_dir " /rewritten
158
159
if test -x " $GIT_DIR " /hooks/post-rewrite &&
159
- test -s " $dotest " /rewritten; then
160
- " $GIT_DIR " /hooks/post-rewrite rebase < " $dotest " /rewritten
160
+ test -s " $merge_dir " /rewritten; then
161
+ " $GIT_DIR " /hooks/post-rewrite rebase < " $merge_dir " /rewritten
161
162
fi
162
- rm -r " $dotest "
163
+ rm -r " $merge_dir "
163
164
say All done.
164
165
}
165
166
@@ -183,7 +184,7 @@ is_interactive () {
183
184
export GIT_EDITOR
184
185
fi
185
186
186
- test -n " $interactive_rebase " || test -f " $dotest " /interactive
187
+ test -n " $interactive_rebase " || test -f " $merge_dir " /interactive
187
188
}
188
189
189
190
run_pre_rebase_hook () {
@@ -195,7 +196,7 @@ run_pre_rebase_hook () {
195
196
fi
196
197
}
197
198
198
- test -f " $GIT_DIR " /rebase-apply /applying &&
199
+ test -f " $apply_dir " /applying &&
199
200
die ' It looks like git-am is in progress. Cannot rebase.'
200
201
201
202
is_interactive " $@ " && exec git-rebase--interactive " $@ "
210
211
OK_TO_SKIP_PRE_REBASE=
211
212
;;
212
213
--continue)
213
- test -d " $dotest " -o -d " $GIT_DIR " /rebase-apply ||
214
+ test -d " $merge_dir " -o -d " $apply_dir " ||
214
215
die " No rebase in progress?"
215
216
216
217
git update-index --ignore-submodules --refresh &&
219
220
echo " mark them as resolved using git add"
220
221
exit 1
221
222
}
222
- if test -d " $dotest "
223
+ if test -d " $merge_dir "
223
224
then
224
- prev_head=$( cat " $dotest /prev_head" )
225
- end=$( cat " $dotest /end" )
226
- msgnum=$( cat " $dotest /msgnum" )
227
- onto=$( cat " $dotest /onto" )
228
- GIT_QUIET=$( cat " $dotest /quiet" )
225
+ prev_head=$( cat " $merge_dir /prev_head" )
226
+ end=$( cat " $merge_dir /end" )
227
+ msgnum=$( cat " $merge_dir /msgnum" )
228
+ onto=$( cat " $merge_dir /onto" )
229
+ GIT_QUIET=$( cat " $merge_dir /quiet" )
229
230
continue_merge
230
231
while test " $msgnum " -le " $end "
231
232
do
235
236
finish_rb_merge
236
237
exit
237
238
fi
238
- head_name=$( cat " $GIT_DIR " /rebase-apply /head-name) &&
239
- onto=$( cat " $GIT_DIR " /rebase-apply /onto) &&
240
- orig_head=$( cat " $GIT_DIR " /rebase-apply /orig-head) &&
241
- GIT_QUIET=$( cat " $GIT_DIR " /rebase-apply /quiet)
239
+ head_name=$( cat " $apply_dir " /head-name) &&
240
+ onto=$( cat " $apply_dir " /onto) &&
241
+ orig_head=$( cat " $apply_dir " /orig-head) &&
242
+ GIT_QUIET=$( cat " $apply_dir " /quiet)
242
243
git am --resolved --3way --resolvemsg=" $RESOLVEMSG " &&
243
244
move_to_original_branch
244
245
exit
245
246
;;
246
247
--skip)
247
- test -d " $dotest " -o -d " $GIT_DIR " /rebase-apply ||
248
+ test -d " $merge_dir " -o -d " $apply_dir " ||
248
249
die " No rebase in progress?"
249
250
250
251
git reset --hard HEAD || exit $?
251
- if test -d " $dotest "
252
+ if test -d " $merge_dir "
252
253
then
253
254
git rerere clear
254
- prev_head=$( cat " $dotest /prev_head" )
255
- end=$( cat " $dotest /end" )
256
- msgnum=$( cat " $dotest /msgnum" )
255
+ prev_head=$( cat " $merge_dir /prev_head" )
256
+ end=$( cat " $merge_dir /end" )
257
+ msgnum=$( cat " $merge_dir /msgnum" )
257
258
msgnum=$(( $msgnum + 1 ))
258
- onto=$( cat " $dotest /onto" )
259
- GIT_QUIET=$( cat " $dotest /quiet" )
259
+ onto=$( cat " $merge_dir /onto" )
260
+ GIT_QUIET=$( cat " $merge_dir /quiet" )
260
261
while test " $msgnum " -le " $end "
261
262
do
262
263
call_merge " $msgnum "
265
266
finish_rb_merge
266
267
exit
267
268
fi
268
- head_name=$( cat " $GIT_DIR " /rebase-apply /head-name) &&
269
- onto=$( cat " $GIT_DIR " /rebase-apply /onto) &&
270
- orig_head=$( cat " $GIT_DIR " /rebase-apply /orig-head) &&
271
- GIT_QUIET=$( cat " $GIT_DIR " /rebase-apply /quiet)
269
+ head_name=$( cat " $apply_dir " /head-name) &&
270
+ onto=$( cat " $apply_dir " /onto) &&
271
+ orig_head=$( cat " $apply_dir " /orig-head) &&
272
+ GIT_QUIET=$( cat " $apply_dir " /quiet)
272
273
git am -3 --skip --resolvemsg=" $RESOLVEMSG " &&
273
274
move_to_original_branch
274
275
exit
275
276
;;
276
277
--abort)
277
- test -d " $dotest " -o -d " $GIT_DIR " /rebase-apply ||
278
+ test -d " $merge_dir " -o -d " $apply_dir " ||
278
279
die " No rebase in progress?"
279
280
280
281
git rerere clear
281
282
282
- test -d " $dotest " || dotest =" $GIT_DIR " /rebase-apply
283
+ test -d " $merge_dir " || merge_dir =" $apply_dir "
283
284
284
- head_name=" $( cat " $dotest " /head-name) " &&
285
+ head_name=" $( cat " $merge_dir " /head-name) " &&
285
286
case " $head_name " in
286
287
refs/* )
287
288
git symbolic-ref HEAD $head_name ||
288
289
die " Could not move back to $head_name "
289
290
;;
290
291
esac
291
- git reset --hard $( cat " $dotest /orig-head" )
292
- rm -r " $dotest "
292
+ git reset --hard $( cat " $merge_dir /orig-head" )
293
+ rm -r " $merge_dir "
293
294
exit
294
295
;;
295
296
--onto)
@@ -388,31 +389,31 @@ test $# -gt 2 && usage
388
389
389
390
if test $# -eq 0 && test -z " $rebase_root "
390
391
then
391
- test -d " $dotest " -o -d " $GIT_DIR " /rebase-apply || usage
392
- test -d " $dotest " -o -f " $GIT_DIR " /rebase-apply /rebasing &&
392
+ test -d " $merge_dir " -o -d " $apply_dir " || usage
393
+ test -d " $merge_dir " -o -f " $apply_dir " /rebasing &&
393
394
die ' A rebase is in progress, try --continue, --skip or --abort.'
394
395
fi
395
396
396
- # Make sure we do not have $GIT_DIR/rebase-apply
397
+ # Make sure we do not have $apply_dir or $merge_dir
397
398
if test -z " $do_merge "
398
399
then
399
- if mkdir " $GIT_DIR " /rebase-apply 2> /dev/null
400
+ if mkdir " $apply_dir " 2> /dev/null
400
401
then
401
- rmdir " $GIT_DIR " /rebase-apply
402
+ rmdir " $apply_dir "
402
403
else
403
404
echo >&2 '
404
405
It seems that I cannot create a rebase-apply directory, and
405
406
I wonder if you are in the middle of patch application or another
406
407
rebase. If that is not the case, please
407
- rm -fr ' " $GIT_DIR " ' /rebase-apply
408
+ rm -fr ' " $apply_dir " '
408
409
and run me again. I am stopping in case you still have something
409
410
valuable there.'
410
411
exit 1
411
412
fi
412
413
else
413
- if test -d " $dotest "
414
+ if test -d " $merge_dir "
414
415
then
415
- die " previous rebase directory $dotest still exists." \
416
+ die " previous rebase directory $merge_dir still exists." \
416
417
' Try git rebase (--continue | --abort | --skip)'
417
418
fi
418
419
fi
@@ -561,35 +562,35 @@ then
561
562
git am $git_am_opt --rebasing --resolvemsg=" $RESOLVEMSG " &&
562
563
move_to_original_branch
563
564
ret=$?
564
- test 0 ! = $ret -a -d " $GIT_DIR " /rebase-apply &&
565
- echo $head_name > " $GIT_DIR " /rebase-apply/ head-name &&
566
- echo $onto > " $GIT_DIR " /rebase-apply/ onto &&
567
- echo $orig_head > " $GIT_DIR " /rebase-apply/ orig-head &&
568
- echo " $GIT_QUIET " > " $GIT_DIR " /rebase-apply/ quiet
565
+ test 0 ! = $ret -a -d " $apply_dir " &&
566
+ echo $head_name > " $apply_dir / head-name" &&
567
+ echo $onto > " $apply_dir / onto" &&
568
+ echo $orig_head > " $apply_dir / orig-head" &&
569
+ echo " $GIT_QUIET " > " $apply_dir / quiet"
569
570
exit $ret
570
571
fi
571
572
572
573
# start doing a rebase with git-merge
573
574
# this is rename-aware if the recursive (default) strategy is used
574
575
575
- mkdir -p " $dotest "
576
- echo " $onto " > " $dotest /onto"
577
- echo " $onto_name " > " $dotest /onto_name"
576
+ mkdir -p " $merge_dir "
577
+ echo " $onto " > " $merge_dir /onto"
578
+ echo " $onto_name " > " $merge_dir /onto_name"
578
579
prev_head=$orig_head
579
- echo " $prev_head " > " $dotest /prev_head"
580
- echo " $orig_head " > " $dotest /orig-head"
581
- echo " $head_name " > " $dotest /head-name"
582
- echo " $GIT_QUIET " > " $dotest /quiet"
580
+ echo " $prev_head " > " $merge_dir /prev_head"
581
+ echo " $orig_head " > " $merge_dir /orig-head"
582
+ echo " $head_name " > " $merge_dir /head-name"
583
+ echo " $GIT_QUIET " > " $merge_dir /quiet"
583
584
584
585
msgnum=0
585
586
for cmt in ` git rev-list --reverse --no-merges " $revisions " `
586
587
do
587
588
msgnum=$(( $msgnum + 1 ))
588
- echo " $cmt " > " $dotest /cmt.$msgnum "
589
+ echo " $cmt " > " $merge_dir /cmt.$msgnum "
589
590
done
590
591
591
- echo 1 > " $dotest /msgnum"
592
- echo $msgnum > " $dotest /end"
592
+ echo 1 > " $merge_dir /msgnum"
593
+ echo $msgnum > " $merge_dir /end"
593
594
594
595
end=$msgnum
595
596
msgnum=1
0 commit comments