When having a look at git yesterday, I stumbled upon etckeeper, a tool to keep /etc in a git (or mercurial) repository and also keeps the metadata (file permissions, …) in the repo making use of metastore.
It hooks into apt but I used /etc/portage/basrc to call it before and after installing a package:
case “$EBUILD_PHASE” in
preinst)
elog “Running etckeeper pre-install…”
/usr/bin/etckeeper pre-install
;;
postinst)
elog “Running etckeeper post-install…”
/usr/bin/etckeeper post-install
;;
esac
One could also modify /etc/etckeeper/post-install.d/50vcs-commit to include the package name etc. in the commit message while emerging:
— a/post-install.d/50vcs-commit
+++ b/post-install.d/50vcs-commit
@@ -2,5 +2,12 @@
set -eif etckeeper unclean; then
- etckeeper commit “committing changes after $HIGHLEVEL_PACKAGE_MANAGER run”
+ case $LOWLEVEL_PACKAGE_MANAGER in
+ portage)
+ etckeeper commit “committing changes after $HIGHLEVEL_PACKAGE_MANAGER run ($CATEGORY/$P)”
+ ;;
+ *)
+ etckeeper commit “committing changes after $HIGHLEVEL_PACKAGE_MANAGER run”
+ ;;
+ esac
fi
There are probably other/better ways to accomplish this and more…
Anyways… etckeeper looks like a nice and very flexible tool to keep /etc in a repository if one wants to.









4 Comments
That’s is very cool!
Time to write an ebuild?
Also, dispatch-conf can be configured to use RCS. RCS may not have the coolness factor of git, but it works very well for keeping a history of config files.
Neat. Hope to see an ebuild soon
Well… I’m just a security dev
and actually I don’t have much time for Gentoo at the moment thanks to my thesis.
derfian: I use dispatch-conf with RCS on my machines too. I just found etckeeper interesting since I had a look at git anyways and of course it comes with the extra features of git, like remote repos and such. Though the question is if one really needs it…