diff options
author | Jeffrey C. Ollie <jeff@ocjtech.us> | 2007-03-29 01:13:02 -0500 |
---|---|---|
committer | Jeffrey C. Ollie <jeff@ocjtech.us> | 2007-03-29 01:13:02 -0500 |
commit | d840fe40c04db0ad6510fc08c15742fdbd3f388e (patch) | |
tree | 3810f595a9265f9cfaac6251cd33957b78ca05bb | |
parent | ac54243f382e817c08c1f895ccfdc05dcacdb044 (diff) | |
download | rancid-d840fe40c04db0ad6510fc08c15742fdbd3f388e.tar.gz rancid-d840fe40c04db0ad6510fc08c15742fdbd3f388e.tar.xz rancid-d840fe40c04db0ad6510fc08c15742fdbd3f388e.zip |
First attempt at adding git support.
-rw-r--r-- | bin/control_rancid.in | 55 | ||||
-rw-r--r-- | bin/rancid-cvs.in | 20 |
2 files changed, 53 insertions, 22 deletions
diff --git a/bin/control_rancid.in b/bin/control_rancid.in index 388bbf4..56d51e5 100644 --- a/bin/control_rancid.in +++ b/bin/control_rancid.in @@ -92,7 +92,7 @@ unset noclobber > /dev/null 2>&1 # RCS system RCSSYS=${RCSSYS:=cvs}; -if [ $RCSSYS != "cvs" -a $RCSSYS != "svn" ] ; then +if [ $RCSSYS != "cvs" -a $RCSSYS != "svn" -s $RCSSYS != "git" ] ; then echo "$RCSSYS is not a valid value for RCSSYS." exit 1 fi @@ -148,17 +148,26 @@ EOF fi fi -# do cvs update of router.db in case anyone has fiddled. -$RCSSYS update router.db > $TMP 2>&1 -grep "^C" $TMP > /dev/null -if [ $? -eq 0 ] ; then - echo "There were $RCSSYS conflicts during update." - echo "" - cat $TMP +# create a .cvsignore +if [ ! -f .cvsignore ] +then + rm -f .cvsignore + cp .cvsignore .gitignore +fi + +if [ $RCSSYS = cvs -o $RCSSYS = svn ]; then + # do cvs update of router.db in case anyone has fiddled. + $RCSSYS update router.db > $TMP 2>&1 + grep "^C" $TMP > /dev/null + if [ $? -eq 0 ] ; then + echo "There were $RCSSYS conflicts during update." + echo "" + cat $TMP + rm -f $TMP + exit 1 + fi rm -f $TMP - exit 1 fi -rm -f $TMP if [ ! -f $DIR/router.db ] then @@ -276,7 +285,7 @@ then touch $router if [ $RCSSYS = cvs ] ; then cvs add -ko $router - else + elif [ $RCSSYS = svn ]; then svn add $router fi $RCSSYS commit -m 'new router' $router @@ -306,8 +315,10 @@ cd $DIR/configs for router in `cut -d: -f1 ../routers.up` ; do if [ $RCSSYS = cvs ] ; then cvs status $router | grep -i 'status: unknown' > /dev/null 2>&1 - else + elif [ $RCSSYS = cvs ]; then svn status $router | grep '^?' > /dev/null 2>&1 + else + true fi if [ $? -eq 0 ]; then touch $router @@ -325,7 +336,9 @@ for router in `find . \( -name \*.new -prune -o -name CVS -prune -o -name .svn - grep -i "^$router:" ../router.db > /dev/null 2>&1 if [ $? -eq 1 ]; then rm -f $router - $RCSSYS delete $router + if [ $RCSSYS = cvs -o $RCSSYS = svn ]; then + $RCSSYS delete $router + fi $RCSSYS commit -m 'deleted router' $router echo "Deleted $router" fi @@ -427,8 +440,10 @@ cd $DIR if [ $RCSSYS = "cvs" ] ; then cvs -f @DIFF_CMD@ -ko | sed -e '/^RCS file: /d' -e '/^--- /d' \ -e '/^+++ /d' -e 's/^\([-+ ]\)/\1 /' >$TMP.diff -else +elif [ $RCSSYS = "svn" ]; then svn diff | sed -e '/^+++ /d' -e 's/^\([-+ ]\)/\1 /' >$TMP.diff +else + git diff $GROUP/configs | sed -e '/^diff /d' -e '/^index /'d -e '/^+++ /d' -e 's/^\([-+ ]\)/\1 /' >$TMP.diff fi if [ $alt_mailrcpt -eq 1 ] ; then @@ -437,10 +452,18 @@ else subject="router config diffs" fi if [ "X$device" != "X" ] ; then - $RCSSYS commit -m "updates - courtesy of $mailrcpt" + if [ $RCSSYS = cvs -o $RCSSYS = svn ]; then + $RCSSYS commit -m "updates - courtesy of $mailrcpt" + else + git commit -m "updates - courtesy of $mailrcpt" $GROUP/configs + fi subject="$GROUP/$device $subject" else - $RCSSYS commit -m updates + if [ $RCSSYS = cvs -o $RCSSYS = svn ]; then + $RCSSYS commit -m "updates" + else + git commit -m "updates" $GROUP/configs + fi subject="$GROUP $subject" fi diff --git a/bin/rancid-cvs.in b/bin/rancid-cvs.in index 24d555a..9f3e82e 100644 --- a/bin/rancid-cvs.in +++ b/bin/rancid-cvs.in @@ -67,7 +67,7 @@ cd $BASEDIR # RCS system RCSSYS=${RCSSYS:=cvs}; -if [ $RCSSYS != "cvs" -a $RCSSYS != "svn" ] ; then +if [ $RCSSYS != "cvs" -a $RCSSYS != "svn" -a $RCSSYS != "git" ] ; then echo "$RCSSYS is not a valid value for RCSSYS." exit 1 fi @@ -76,8 +76,12 @@ fi if [ ! -d $CVSROOT ]; then if [ $RCSSYS = cvs ]; then cvs -d $CVSROOT init - else + elif [ $RCSSYS = svn ]; then svnadmin create $CVSROOT + else + # git does not use $CVSROOT, instead configs are stored in $BASEDIR + git init + echo "logs" >> .gitignore fi fi @@ -107,7 +111,7 @@ do cvs import -m "$GROUP" $GROUP new rancid cd $BASEDIR cvs checkout $GROUP - else + elif [ $RCSSYS = svn ]; then svn import -m "$GROUP" . file://$CVSROOT/$GROUP cd $BASEDIR svn checkout file://$CVSROOT/$GROUP $GROUP @@ -116,8 +120,10 @@ do cd $DIR if [ ! -d configs ]; then mkdir configs - $RCSSYS add configs - $RCSSYS commit -m 'new' configs + if [ $RCSSYS = cvs -o $RCSSYS = svn ]; then + $RCSSYS add configs + $RCSSYS commit -m 'new' configs + fi fi # main files @@ -132,7 +138,9 @@ do fi if [ ! -f router.db ]; then touch router.db - $RCSSYS add router.db + if [ $RCSSYS = cvs -o $RCSSYS = svn ]; then + $RCSSYS add router.db + fi $RCSSYS commit -m 'new' router.db fi done |