+# if initial comma is supplied, entries are not positional. Unspecified
+# <subdir> means root (and there may be only one).
+# xxx want auto branch names
+# xxx too complicated
+# how about for now
+# [+]<commit> [<subdir/> [+]<commit>...]
+# ? plus options
+# --new-upstream-different-subtrees
+#
+# automatic case
+# git-debrebase new-upstream
+# - previous breakwater merge must be gdr-generated
+# - orig set is the same as before
+# - implicitly uses upstream branches according to orig set
+# - not all upstream branches need be updated
+# - insists on fast-forward of each branch, unless
+# --force (or --force=<subdir>[/])
+# branch set adjustments
+# git-debrebase new-upstream --add <subdir>/
+# git-debrebase new-upstream --rm <subdir>/
+# git-debrebase new-upstream / [<subdir>/ ...]
+# - orig set is adjusted
+# - otherwise like auto (--add is not checked for ffness, obv)
+# - multiple --add and --rm may be specified
+# - --add makes new upstream the last contributor
+# explicit
+# git-debrebase / [<rootcommitid>] [<subdir>/ [<commitid>] ...]
+# - orig set is precisely as specified now
+# - previous breakwater merge is irrelevant
+# - no fast forward checks
+# for now only explicit with commitids
+
+ # implicitly uses `upstream'
+# # (or multiple other branches)
+# git-debrebase new-upstream \
+# [<subdir>/]=<commitid>
+
+# UPSTREAM[,[[SUBDIR:]SUBUPSTREAM]
+# default for SUBDIR: is from previous upstream merge[xxx terminology]
+#
+#
+#xxx
+# when starting must record original start (for ff)
+# and new rebase basis
+#
+# git-ffqrebase start [BASE]
+# # records previous HEAD so it can be overwritten
+# # records base for future git-ffqrebase
+# git-ffqrebase set-base BASE
+# git-ffqrebase <git-rebase options>
+# git-ffqrebase finish
+# git-ffqrebase status [BRANCH]
+#
+# refs/ffqrebase-prev/BRANCH BRANCH may be refs/...; if not it means
+# refs/ffqrebase-base/BRANCH refs/heads/BRANCH
+# zero, one, or both of these may exist