From b70e480c535be671c7b284d1ff19a024be64e80c Mon Sep 17 00:00:00 2001 From: short <> Date: Thu, 6 Mar 2003 13:43:59 +0000 Subject: [PATCH] Maintain local CVS branch from foreign source tree --- bin/cvsbranchdiff | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 bin/cvsbranchdiff diff --git a/bin/cvsbranchdiff b/bin/cvsbranchdiff new file mode 100755 index 0000000..b6dcf24 --- /dev/null +++ b/bin/cvsbranchdiff @@ -0,0 +1,36 @@ +#! /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' -- 1.8.3.1