Storing Open Source Configs in Mercurial (BSD)

  1. create a script /scripts/commit_configs.sh
    /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.

  2. 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