/etc配下をバージョン管理をしよう!

ということでetckeeperをインストール、する前にバージョン管理はgitで行いたいので、先にgitのインストールをする。
etckeeperを先にインストールすると一緒にbzrがインスト-ルされることになるので注意。

gitのインストール

sudo aptitude install git

これだけです。簡単ですね。

etckeeperのインストール

sudo aptitude install etckeeper

これだけです。k(ry

etckeeperはデフォルトでbzrで管理するように設定されているので、これをgitに変更する。

etckeeperの設定変更

sudo nano /etc/etckeeper/etckeeper.conf
# The VCS to use.
#VCS="hg"
VCS="git"
#VCS="bzr"
#VCS="darcs"

# Options passed to git commit when run by etckeeper.
GIT_COMMIT_OPTIONS=""

# Options passed to hg commit when run by etckeeper.
HG_COMMIT_OPTIONS=""

# Options passed to bzr commit when run by etckeeper.
BZR_COMMIT_OPTIONS=""

# Options passed to darcs record when run by etckeeper.
DARCS_COMMIT_OPTIONS="-a"

# Uncomment to avoid etckeeper committing existing changes
# to /etc automatically once per day.
#AVOID_DAILY_AUTOCOMMITS=1

# Uncomment the following to avoid special file warning
# (the option is enabled automatically by cronjob regardless).
#AVOID_SPECIAL_FILE_WARNING=1

# Uncomment to avoid etckeeper committing existing changes to
# /etc before installation. It will cancel the installation,
# so you can commit the changes by hand.
#AVOID_COMMIT_BEFORE_INSTALL=1

# The high-level package manager that's being used.
# (apt, pacman-g2, yum etc)
HIGHLEVEL_PACKAGE_MANAGER=apt

# The low-level package manager that's being used.
# (dpkg, rpm, pacman-g2, etc)
LOWLEVEL_PACKAGE_MANAGER=dpkg

リポジトリ作成と初回コミット

sudo etckeeper init
sudo etckeeper commit "init add"

あとはaptを使った更新時には自動的にコミットされるし、etckeeperインストール時に/etc/cron.daily/配下にetckeeperが作成されるので毎日自動コミットされるし、手動でコミットしたいときは

sudo etckeeper commit "コメント"

でコミットすればいいし楽ちんだね!

サブコマンドの追加

参考URL:etckeeperのつかいかた(インストール、サブコマンド追加) | http://blog.udzura.jp
etckeeperの用意されていないサブコマンドが自作できるみたい。

サブコマンド logのディレクトリ作成

sudo mkdir -p /etc/etckeeper/log.d

サブコマンドのスクリプト作成

sudo nano /etc/etckeeper/log.d/10git-log
#!/bin/sh
set -e
if [ "$VCS" = git ] && [ -d .git ]; then
    git --git-dir=/etc/.git log \
        --graph \
        --all \
        --color \
        --pretty='%x09%h %cn%x09%C(yellow)(%cr)%Creset%x09%s %Cred%d%Creset'
fi

サブコマンドのスクリプトに実行権限付与

sudo chmod +x /etc/etckeeper/log.d/10git-log

実際にコマンドを実行してみる

sudo etckeeper log
*       f256560 root    (49 minutes ago)        init add  (HEAD, master)

※実際には(49 minutes ago)の文字は黄色、(HEAD, master)の文字は赤色になってマス。