--- /dev/null
+#! /bin/sh
+#
+# $Id$
+
+
+if [ $# = 0 ];then
+ echo 'currendir == CVS (old) version; $1 == dir w/new version; [$2 == "print"]'
+ exit 1
+ fi
+
+t=/tmp/cvsbranchdiff.$$
+trap 'rm -rf $t' EXIT
+rm -rf $t
+mkdir $t
+function findnice
+{
+ find "$1" -not -regex '.*/CVS\(\|/[^/]+\)$' '(' '!' -type d -o -printf "%P/\n" ')' '(' '!' -type f -o -printf "%P\n" ')'|sort
+}
+(findnice . ;echo "/") >$t/old
+(findnice "$1" ) >$t/new
+diff -u999999 $t/old $t/new|sed -e '1,/^@@.*@@$/d' >$t/diff
+if [ "$2" = print ];then
+ grep '^[+-]' $t/diff
+ exit 0
+ fi
+echo '#! /bin/sh'
+echo 'set -ex'
+sed \
+ -e 's#^[+]\(.*\)/$#mkdir '\''./\1'\''; cvs add -kk '\''\1'\''#' \
+ -e 's#^[+]\(.*[^/]\)$#cp -p '\'"$1"'/\1'\'' '\''./\1'\''; cvs add -kk '\''\1'\''#' \
+ -e '\#^[-]\(.*\)/$#d' \
+ -e 's#^[-]\(.*[^/]\)$#cvs remove -f '\''\1'\''#' \
+ -e '\#^[ ]\(.*\)/$#d' \
+ -e 's#^[ ]\(.*[^/]\)$#cmp -s '\'"$1"'/\1'\'' '\''./\1'\'' || cp -p '\'"$1"'/\1'\'' '\''./\1'\''#' \
+ <$t/diff
+echo 'echo done'