9
9
set -- -h
10
10
fi
11
11
OPTS_SPEC=" \
12
- git subtree add --prefix=<prefix> <commit>
13
- git subtree add --prefix=<prefix> <repository> <ref>
14
- git subtree merge --prefix=<prefix> <commit>
15
- git subtree pull --prefix=<prefix> <repository> <ref>
16
- git subtree push --prefix=<prefix> <repository> <ref>
17
- git subtree split --prefix=<prefix> <commit>
18
- git subtree map --prefix=<prefix> <mainline> <subtree>
12
+ git subtree add --prefix=<prefix> <commit>
13
+ git subtree add --prefix=<prefix> <repository> <ref>
14
+ git subtree merge --prefix=<prefix> <commit>
15
+ git subtree pull --prefix=<prefix> <repository> <ref>
16
+ git subtree push --prefix=<prefix> <repository> <ref>
17
+ git subtree split --prefix=<prefix> <commit>
18
+ git subtree map --prefix=<prefix> <mainline> <subtree>
19
+ git subtree ignore --prefix=<prefix> <commit>
20
+ git subtree use --prefix=<prefix> <commit>
19
21
--
20
22
h,help show the help
21
23
q quiet
@@ -162,7 +164,7 @@ command="$1"
162
164
shift
163
165
164
166
case " $command " in
165
- add|merge|pull|map)
167
+ add|merge|pull|map|ignore|use )
166
168
default=
167
169
;;
168
170
split|push)
@@ -433,6 +435,18 @@ find_mainline_ref () {
433
435
done
434
436
}
435
437
438
+ exclude_processed_refs () {
439
+ if test -r " $cachedir /processed"
440
+ then
441
+ cat " $cachedir /processed" |
442
+ while read rev
443
+ do
444
+ debug " read $rev "
445
+ echo " ^$rev "
446
+ done
447
+ fi
448
+ }
449
+
436
450
copy_commit () {
437
451
# We're going to set some environment vars here, so
438
452
# do it in a subshell to get rid of them safely later
@@ -798,20 +812,60 @@ cmd_add_commit () {
798
812
}
799
813
800
814
cmd_map () {
801
- oldrev=" $1 "
802
- newrev=" $2 "
803
815
804
- if test -z " $oldrev "
816
+ if test -z " $1 "
805
817
then
806
818
die " You must provide a revision to map"
807
819
fi
808
820
821
+ oldrev=$( git rev-parse --revs-only " $1 " ) || exit $?
822
+ newrev=
823
+
824
+ if test -n " $2 "
825
+ then
826
+ newrev=$( git rev-parse --revs-only " $2 " ) || exit $?
827
+ fi
828
+
809
829
cache_setup || exit $?
810
830
cache_set " $oldrev " " $newrev "
811
831
812
832
say " Mapped $oldrev => $newrev "
813
833
}
814
834
835
+ cmd_ignore () {
836
+ revs=$( git rev-parse $default --revs-only " $@ " ) || exit $?
837
+ ensure_single_rev $revs
838
+
839
+ say " Ignoring $revs "
840
+
841
+ cache_setup || exit $?
842
+
843
+ git rev-list $revs |
844
+ while read rev
845
+ do
846
+ cache_set " $rev " " "
847
+ done
848
+
849
+ echo " $revs " >> " $cachedir /processed"
850
+ }
851
+
852
+ cmd_use () {
853
+ revs=$( git rev-parse $default --revs-only " $@ " ) || exit $?
854
+ ensure_single_rev $revs
855
+
856
+ say " Using existing subtree $revs "
857
+
858
+ cache_setup || exit $?
859
+
860
+ git rev-list $revs |
861
+ while read rev
862
+ do
863
+ cache_set " $rev " " $rev "
864
+ done
865
+
866
+ echo " $revs " >> " $cachedir /processed"
867
+ }
868
+
815
869
cmd_split () {
816
870
debug " Splitting $dir ..."
817
871
cache_setup || exit $?
@@ -829,7 +883,7 @@ cmd_split () {
829
883
done
830
884
fi
831
885
832
- unrevs=" $( find_existing_splits " $dir " " $revs " ) "
886
+ unrevs=" $( find_existing_splits " $dir " " $revs " ) $( exclude_processed_refs ) "
833
887
834
888
mainline=" $( find_mainline_ref " $dir " " $revs " ) "
835
889
if test -n " $mainline "
0 commit comments