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.
5 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…
Ho provato a farlo io l’ebuil per etckeeper e metastore(dipendenza di etckeeper). Lo trovate su http://www.salug.it/~sydro/progetti