====== Storing Open Source Configs in Mercurial (BSD) ======
* One of the best features about revision control systems is that nothing is ever deleted, so it would be really handy to store server configs in a distributed revision control system like mercurial. The following is one way this can be accomplished without the administrator is remember to run commits
- create a script **/scripts/commit_configs.sh**#!/usr/local/bin/bash
export PATH=${PATH}:/usr/local/sbin:/usr/local/bin
function commit_dir { if [ -d ${1} ]
then
cd ${1}
if [ ! -d .hg ]
then
hg init
fi
hg addremove
hg commit --config ui.username="`hostname`" -m "Update `date`"
fi
}
commit_dir /etc/
commit_dir /usr/local/etc/This script will init a repo to the two etc dirs and update the repo as changes are made to the config in each directory. You can add new entries at the bottom of the script to have make mercurial repos for more config directories.
- Next link the script **/scripts/commit_configs.sh** to one for the periodic directories or made a entry in **/etc/crontab**.
===== Setup Script =====
mkdir /scripts
cd /scripts
wget -O commit_configs.sh http://wiki.sebeka.k12.mn.us/_export/code/ubuntu:merc_etc?codeblock=0
chmod 755 commit_configs.sh
/scripts/commit_configs.sh
cd /etc/periodic/daily/
ln -s /scripts/commit_configs.sh