@@ -55,20 +55,23 @@ arg_split_annotate=
55
55
arg_addmerge_squash=
56
56
arg_addmerge_message=
57
57
58
+ # Usage: debug [MSG...]
58
59
debug () {
59
60
if test -n " $arg_debug "
60
61
then
61
62
printf " %s\n" " $* " >&2
62
63
fi
63
64
}
64
65
66
+ # Usage: progress [MSG...]
65
67
progress () {
66
68
if test -z " $GIT_QUIET "
67
69
then
68
70
printf " %s\r" " $* " >&2
69
71
fi
70
72
}
71
73
74
+ # Usage: assert CMD...
72
75
assert () {
73
76
if ! " $@ "
74
77
then
@@ -192,7 +195,9 @@ main () {
192
195
" cmd_$arg_command " " $@ "
193
196
}
194
197
198
+ # Usage: cache_setup
195
199
cache_setup () {
200
+ assert test $# = 0
196
201
cachedir=" $GIT_DIR /subtree-cache/$$ "
197
202
rm -rf " $cachedir " ||
198
203
die " Can't delete old cachedir: $cachedir "
@@ -203,6 +208,7 @@ cache_setup () {
203
208
debug " Using cachedir: $cachedir " >&2
204
209
}
205
210
211
+ # Usage: cache_get [REVS...]
206
212
cache_get () {
207
213
for oldrev in " $@ "
208
214
do
@@ -214,6 +220,7 @@ cache_get () {
214
220
done
215
221
}
216
222
223
+ # Usage: cache_miss [REVS...]
217
224
cache_miss () {
218
225
for oldrev in " $@ "
219
226
do
@@ -224,7 +231,9 @@ cache_miss () {
224
231
done
225
232
}
226
233
234
+ # Usage: check_parents PARENTS_EXPR INDENT
227
235
check_parents () {
236
+ assert test $# = 2
228
237
missed=$( cache_miss " $1 " ) || exit $?
229
238
local indent=$(( $2 + 1 ))
230
239
for miss in $missed
@@ -237,11 +246,15 @@ check_parents () {
237
246
done
238
247
}
239
248
249
+ # Usage: set_notree REV
240
250
set_notree () {
251
+ assert test $# = 1
241
252
echo " 1" > " $cachedir /notree/$1 "
242
253
}
243
254
255
+ # Usage: cache_set OLDREV NEWREV
244
256
cache_set () {
257
+ assert test $# = 2
245
258
oldrev=" $1 "
246
259
newrev=" $2 "
247
260
if test " $oldrev " ! = " latest_old" &&
@@ -253,7 +266,9 @@ cache_set () {
253
266
echo " $newrev " > " $cachedir /$oldrev "
254
267
}
255
268
269
+ # Usage: rev_exists REV
256
270
rev_exists () {
271
+ assert test $# = 1
257
272
if git rev-parse " $1 " > /dev/null 2>&1
258
273
then
259
274
return 0
@@ -262,17 +277,22 @@ rev_exists () {
262
277
fi
263
278
}
264
279
265
- # if a commit doesn't have a parent, this might not work. But we only want
280
+ # Usage: try_remove_previous REV
281
+ #
282
+ # If a commit doesn't have a parent, this might not work. But we only want
266
283
# to remove the parent from the rev-list, and since it doesn't exist, it won't
267
284
# be there anyway, so do nothing in that case.
268
285
try_remove_previous () {
286
+ assert test $# = 1
269
287
if rev_exists " $1 ^"
270
288
then
271
289
echo " ^$1 ^"
272
290
fi
273
291
}
274
292
293
+ # Usage: find_latest_squash DIR
275
294
find_latest_squash () {
295
+ assert test $# = 1
276
296
debug " Looking for latest squash ($dir )..."
277
297
dir=" $1 "
278
298
sq=
@@ -316,10 +336,12 @@ find_latest_squash () {
316
336
done || exit $?
317
337
}
318
338
339
+ # Usage: find_existing_splits DIR REV
319
340
find_existing_splits () {
341
+ assert test $# = 2
320
342
debug " Looking for prior splits..."
321
343
dir=" $1 "
322
- revs =" $2 "
344
+ rev =" $2 "
323
345
main=
324
346
sub=
325
347
local grep_format=" ^git-subtree-dir: $dir /*\$ "
@@ -328,7 +350,7 @@ find_existing_splits () {
328
350
grep_format=" ^Add '$dir /' from commit '"
329
351
fi
330
352
git log --grep=" $grep_format " \
331
- --no-show-signature --pretty=format:' START %H%n%s%n%n%b%nEND%n' $revs |
353
+ --no-show-signature --pretty=format:' START %H%n%s%n%n%b%nEND%n' " $rev " |
332
354
while read a b junk
333
355
do
334
356
case " $a " in
@@ -365,7 +387,9 @@ find_existing_splits () {
365
387
done || exit $?
366
388
}
367
389
390
+ # Usage: copy_commit REV TREE FLAGS_STR
368
391
copy_commit () {
392
+ assert test $# = 3
369
393
# We're going to set some environment vars here, so
370
394
# do it in a subshell to get rid of them safely later
371
395
debug copy_commit " {$1 }" " {$2 }" " {$3 }"
@@ -391,7 +415,9 @@ copy_commit () {
391
415
) || die " Can't copy commit $1 "
392
416
}
393
417
418
+ # Usage: add_msg DIR LATEST_OLD LATEST_NEW
394
419
add_msg () {
420
+ assert test $# = 3
395
421
dir=" $1 "
396
422
latest_old=" $2 "
397
423
latest_new=" $3 "
@@ -410,7 +436,9 @@ add_msg () {
410
436
EOF
411
437
}
412
438
439
+ # Usage: add_squashed_msg REV DIR
413
440
add_squashed_msg () {
441
+ assert test $# = 2
414
442
if test -n " $arg_addmerge_message "
415
443
then
416
444
echo " $arg_addmerge_message "
@@ -419,7 +447,9 @@ add_squashed_msg () {
419
447
fi
420
448
}
421
449
450
+ # Usage: rejoin_msg DIR LATEST_OLD LATEST_NEW
422
451
rejoin_msg () {
452
+ assert test $# = 3
423
453
dir=" $1 "
424
454
latest_old=" $2 "
425
455
latest_new=" $3 "
@@ -438,7 +468,9 @@ rejoin_msg () {
438
468
EOF
439
469
}
440
470
471
+ # Usage: squash_msg DIR OLD_SUBTREE_COMMIT NEW_SUBTREE_COMMIT
441
472
squash_msg () {
473
+ assert test $# = 3
442
474
dir=" $1 "
443
475
oldsub=" $2 "
444
476
newsub=" $3 "
@@ -460,12 +492,16 @@ squash_msg () {
460
492
echo " git-subtree-split: $newsub "
461
493
}
462
494
495
+ # Usage: toptree_for_commit COMMIT
463
496
toptree_for_commit () {
497
+ assert test $# = 1
464
498
commit=" $1 "
465
499
git rev-parse --verify " $commit ^{tree}" || exit $?
466
500
}
467
501
502
+ # Usage: subtree_for_commit COMMIT DIR
468
503
subtree_for_commit () {
504
+ assert test $# = 2
469
505
commit=" $1 "
470
506
dir=" $2 "
471
507
git ls-tree " $commit " -- " $dir " |
@@ -479,7 +515,9 @@ subtree_for_commit () {
479
515
done || exit $?
480
516
}
481
517
518
+ # Usage: tree_changed TREE [PARENTS...]
482
519
tree_changed () {
520
+ assert test $# -gt 0
483
521
tree=$1
484
522
shift
485
523
if test $# -ne 1
@@ -496,7 +534,9 @@ tree_changed () {
496
534
fi
497
535
}
498
536
537
+ # Usage: new_squash_commit OLD_SQUASHED_COMMIT OLD_NONSQUASHED_COMMIT NEW_NONSQUASHED_COMMIT
499
538
new_squash_commit () {
539
+ assert test $# = 3
500
540
old=" $1 "
501
541
oldsub=" $2 "
502
542
newsub=" $3 "
@@ -511,7 +551,9 @@ new_squash_commit () {
511
551
fi
512
552
}
513
553
554
+ # Usage: copy_or_skip REV TREE NEWPARENTS
514
555
copy_or_skip () {
556
+ assert test $# = 3
515
557
rev=" $1 "
516
558
tree=" $2 "
517
559
newparents=" $3 "
@@ -586,7 +628,9 @@ copy_or_skip () {
586
628
fi
587
629
}
588
630
631
+ # Usage: ensure_clean
589
632
ensure_clean () {
633
+ assert test $# = 0
590
634
if ! git diff-index HEAD --exit-code --quiet 2>&1
591
635
then
592
636
die " Working tree has modifications. Cannot add."
@@ -597,12 +641,16 @@ ensure_clean () {
597
641
fi
598
642
}
599
643
644
+ # Usage: ensure_valid_ref_format REF
600
645
ensure_valid_ref_format () {
646
+ assert test $# = 1
601
647
git check-ref-format " refs/heads/$1 " ||
602
648
die " '$1 ' does not look like a ref"
603
649
}
604
650
651
+ # Usage: process_split_commit REV PARENTS INDENT
605
652
process_split_commit () {
653
+ assert test $# = 3
606
654
local rev=" $1 "
607
655
local parents=" $2 "
608
656
local indent=$3
@@ -654,6 +702,8 @@ process_split_commit () {
654
702
cache_set latest_old " $rev "
655
703
}
656
704
705
+ # Usage: cmd_add REV
706
+ # Or: cmd_add REPOSITORY REF
657
707
cmd_add () {
658
708
659
709
ensure_clean
@@ -681,17 +731,21 @@ cmd_add () {
681
731
fi
682
732
}
683
733
734
+ # Usage: cmd_add_repository REPOSITORY REFSPEC
684
735
cmd_add_repository () {
736
+ assert test $# = 2
685
737
echo " git fetch" " $@ "
686
738
repository=$1
687
739
refspec=$2
688
740
git fetch " $@ " || exit $?
689
741
cmd_add_commit FETCH_HEAD
690
742
}
691
743
744
+ # Usage: cmd_add_commit REV
692
745
cmd_add_commit () {
693
746
# The rev has already been validated by cmd_add(), we just
694
747
# need to normalize it.
748
+ assert test $# = 1
695
749
rev=$( git rev-parse --verify " $1 ^{commit}" ) || exit $?
696
750
697
751
debug " Adding $dir as '$rev '..."
@@ -722,6 +776,7 @@ cmd_add_commit () {
722
776
say >&2 " Added dir '$dir '"
723
777
}
724
778
779
+ # Usage: cmd_split [REV]
725
780
cmd_split () {
726
781
if test $# -eq 0
727
782
then
@@ -801,6 +856,7 @@ cmd_split () {
801
856
exit 0
802
857
}
803
858
859
+ # Usage: cmd_merge REV
804
860
cmd_merge () {
805
861
test $# -eq 1 ||
806
862
die " You must provide exactly one revision. Got: '$* '"
@@ -837,6 +893,7 @@ cmd_merge () {
837
893
fi
838
894
}
839
895
896
+ # Usage: cmd_pull REPOSITORY REMOTEREF
840
897
cmd_pull () {
841
898
if test $# -ne 2
842
899
then
@@ -848,6 +905,7 @@ cmd_pull () {
848
905
cmd_merge FETCH_HEAD
849
906
}
850
907
908
+ # Usage: cmd_push REPOSITORY REMOTEREF
851
909
cmd_push () {
852
910
if test $# -ne 2
853
911
then
0 commit comments