summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey C. Ollie <jeff@ocjtech.us>2007-03-29 01:13:02 -0500
committerJeffrey C. Ollie <jcollie@lt26923.campus.dmacc.edu>2009-09-01 08:34:50 -0500
commitdf23b0df28dbddf73d06910ac250459743ac663e (patch)
tree9c57a09f8e06e6ef8627caedde6fbdf3703a4e9d
parentaa657be97af29533877c6fed0465c91fc7214c70 (diff)
downloadrancid-df23b0df28dbddf73d06910ac250459743ac663e.tar.gz
rancid-df23b0df28dbddf73d06910ac250459743ac663e.tar.xz
rancid-df23b0df28dbddf73d06910ac250459743ac663e.zip
First attempt at adding git support.
-rw-r--r--bin/control_rancid.in55
-rw-r--r--bin/rancid-cvs.in20
2 files changed, 53 insertions, 22 deletions
diff --git a/bin/control_rancid.in b/bin/control_rancid.in
index 7b64354..fa8129d 100644
--- a/bin/control_rancid.in
+++ b/bin/control_rancid.in
@@ -112,7 +112,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
@@ -165,17 +165,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
echo "$DIR/router.db does not exist."
@@ -289,7 +298,7 @@ if [ $RALL -ne 0 -o $RDOWN -ne 0 -o $RUP -ne 0 ] ; 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
@@ -319,8 +328,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
@@ -338,7 +349,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
@@ -448,8 +461,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
@@ -458,10 +473,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 17960e0..2104694 100644
--- a/bin/rancid-cvs.in
+++ b/bin/rancid-cvs.in
@@ -87,7 +87,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
@@ -96,8 +96,12 @@ fi
if [ ! -d $CVSROOT ]; then
if [ $RCSSYS = cvs ]; then
cvs -d $CVSROOT init
- else
+ elif [ $RCSSYS = svn ]; then
svnadmin create $CVSROOT @SVN_FSTYPE@
+ else
+ # git does not use $CVSROOT, instead configs are stored in $BASEDIR
+ git init
+ echo "logs" >> .gitignore
fi
fi
@@ -127,7 +131,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
@@ -136,8 +140,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
@@ -152,7 +158,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