Added a --onto option, but it's so complicated I can't tell if it works.
diff --git a/git-subtree.sh b/git-subtree.sh
index af1d332..7e1707a 100755
--- a/git-subtree.sh
+++ b/git-subtree.sh
@@ -13,7 +13,7 @@
 h,help   show the help
 q        quiet
 v        verbose
-onto=    existing subtree revision to connect, if any
+onto=    existing subtree revision to search for parent
 rejoin   merge the new branch back into HEAD
 "
 eval $(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)
@@ -172,6 +172,16 @@
 	debug "Splitting $dir..."
 	cache_setup || exit $?
 	
+	if [ -n "$onto" ]; then
+		echo "Reading history for $onto..."
+		git rev-list $onto |
+		while read rev; do
+			# the 'onto' history is already just the subdir, so
+			# any parent we find there can be used verbatim
+			cache_set $rev $rev
+		done
+	fi
+	
 	unrevs="$(find_existing_splits "$dir" "$revs")"
 	
 	git rev-list --reverse --parents $revs $unrevs -- "$dir" |