summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL5
-rw-r--r--Makefile13
-rw-r--r--README8
-rw-r--r--TODO11
-rw-r--r--apt.conf4
-rw-r--r--debian/changelog12
-rwxr-xr-xetckeeper6
-rw-r--r--etckeeper.115
-rw-r--r--etckeeper.conf6
-rwxr-xr-xinit.d/50git-ignore9
-rw-r--r--post-apt.d/README2
-rwxr-xr-xpost-install.d/10git-test (renamed from post-apt.d/10git-test)0
-rwxr-xr-xpost-install.d/30git-add (renamed from post-apt.d/30git-add)0
-rwxr-xr-xpost-install.d/40git-rm (renamed from post-apt.d/40git-rm)0
-rwxr-xr-xpost-install.d/50git-commit (renamed from post-apt.d/50git-commit)5
-rw-r--r--post-install.d/README2
-rw-r--r--pre-apt.d/README2
-rwxr-xr-xpre-install.d/50uncommitted-changes (renamed from pre-apt.d/50uncommitted-changes)2
-rw-r--r--pre-install.d/README3
19 files changed, 73 insertions, 32 deletions
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..56c26e7
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,5 @@
+Before running 'make install', you should edit etckeeper.conf and make sure
+it configured appropriately for your distribution.
+
+Distribution packagers may find it more convenient to set CONFFILE to point
+to a different etckeeper.conf that is preconfigured for your distribution.
diff --git a/Makefile b/Makefile
index 17ac854..23cb3ea 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,15 @@
+# You should configure etckeeper.conf for your distribution before
+# installing etckeeper.
+CONFFILE=etckeeper.conf
+include $(CONFFILE)
+
install:
mkdir -p $(PREFIX)/etc/etckeeper/
cp -a *.d $(PREFIX)/etc/etckeeper/
- cp etckeeper.conf $(PREFIX)/etc/etckeeper/
+ cp $(CONFFILE) $(PREFIX)/etc/etckeeper/etckeeper.conf
install -D etckeeper $(PREFIX)/usr/bin/etckeeper
- install -m 0644 -D apt.conf $(PREFIX)/etc/apt/apt.conf.d/05etckeeper
install -m 0644 -D etckeeper.1 $(PREFIX)/usr/share/man/man1/etckeeper.1
- install -m 0644 -D bash_completion $(PREFIX)/etc/bash_completion.d/etckeeper \ No newline at end of file
+ install -m 0644 -D bash_completion $(PREFIX)/etc/bash_completion.d/etckeeper
+ifeq ($(HIGHLEVEL_PACKAGE_MANAGER),apt))
+ install -m 0644 -D apt.conf $(PREFIX)/etc/apt/apt.conf.d/05etckeeper
+endif
diff --git a/README b/README
index 7ec20b2..c4887c5 100644
--- a/README
+++ b/README
@@ -33,8 +33,8 @@ So don't use it on git repositories from untrusted sources.
etckeeper has special support to handle changes to /etc caused by
installing and upgrading packages. Before apt installs packages,
-`etckeeper pre-apt` will check that /etc contains no uncommitted changes.
-After apt installs packages, `etckeeper post-apt` will add any new
+`etckeeper pre-install` will check that /etc contains no uncommitted changes.
+After apt installs packages, `etckeeper post-install` will add any new
interesting files to the repository, and commit the changes.
git is designed as a way to manage source code, not as a way to manage
@@ -143,7 +143,7 @@ action.
For example, here's how to configure it to run `git gc` after each apt run,
which will save a lot of disk space:
- cd /etc/etckeeper/post-apt.d
+ cd /etc/etckeeper/post-install.d
(echo '#!/bin/sh' ; echo 'exec git-gc') > 99git-gc
chmod +x 99git-gc
git add .
@@ -152,7 +152,7 @@ which will save a lot of disk space:
Here's how to disable the automatic commits after each apt run, while still
letting it git-add new files and git-rm removed ones:
- chmod -x /etc/etckeeper/post-apt.d/75git-commit
+ chmod -x /etc/etckeeper/post-install.d/75git-commit
Note that the etckeeper commands are careful to not hardcode anything about
git. If you want to use some other revision control system, that's
diff --git a/TODO b/TODO
index 4bcd9a9..245f3a4 100644
--- a/TODO
+++ b/TODO
@@ -17,7 +17,10 @@
in one repo, and public in another. This would need either symlink
farming or git "fake bare" repos, both of which are not pleasant, yet.
- Another way would be to allow splitting out subdirs into their own
- repos. This is already doable, would just need modifying the pre-apt and
- post-apt stuff (ie, it needs to commit in the subdirs too). Using
- mr would be a possibility..
+ Another way would be to allow splitting out subdirs into their own repos.
+ This is already doable, would just need modifying the pre-install and
+ post-instlal stuff (ie, it needs to commit in the subdirs too). Using mr
+ would be a possibility..
+
+* Figure out what packages were acted on, and include that info in the commit
+ message
diff --git a/apt.conf b/apt.conf
index 4293637..97d0f87 100644
--- a/apt.conf
+++ b/apt.conf
@@ -1,2 +1,2 @@
-DPkg::Pre-Install-Pkgs { "if [ -x /usr/bin/etckeeper ]; then etckeeper pre-apt; fi"; };
-DPkg::Post-Invoke { "if [ -x /usr/bin/etckeeper ]; then etckeeper post-apt; fi"; };
+DPkg::Pre-Install-Pkgs { "if [ -x /usr/bin/etckeeper ]; then etckeeper pre-install; fi"; };
+DPkg::Post-Invoke { "if [ -x /usr/bin/etckeeper ]; then etckeeper post-install; fi"; };
diff --git a/debian/changelog b/debian/changelog
index 999da6f..f818472 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+etckeeper (0.7) UNRELEASED; urgency=low
+
+ * Added configuration options for highlevel and lowlevel package managers
+ in etckeeper.conf.
+ * Only install apt hooks if apt is used.
+ * Only add backup conffile exclusion to gitignore if dpkg is used.
+ * Rename pre/post-apt.d to pre/post-install.d to allow the same directories
+ to be used for other package managers.
+ * Use the name of the highlevel package manager in commit messages.
+
+ -- Joey Hess <joeyh@debian.org> Thu, 03 Jan 2008 20:43:23 -0500
+
etckeeper (0.6) unstable; urgency=low
* Depend on a fairly recent git-core. Closes: #453063
diff --git a/etckeeper b/etckeeper
index dfd44bb..f78afdf 100755
--- a/etckeeper
+++ b/etckeeper
@@ -8,6 +8,12 @@ fi
if [ ! -z "$GIT_COMMIT_OPTIONS" ]; then
export GIT_COMMIT_OPTIONS
fi
+if [ ! -z "$HIGHLEVEL_PACKAGE_MANAGER" ]; then
+ export HIGHLEVEL_PACKAGE_MANAGER
+fi
+if [ ! -z "$LOWLEVEL_PACKAGE_MANAGER" ]; then
+ export LOWLEVEL_PACKAGE_MANAGER
+fi
if [ -z "$1" ]; then
echo "usage: etckeeper command [directory]" >&2
diff --git a/etckeeper.1 b/etckeeper.1
index 2d38bf8..6d00cdb 100644
--- a/etckeeper.1
+++ b/etckeeper.1
@@ -21,13 +21,14 @@ a clone of the /etc repository located elsewhere.
This is called as a git pre-commit hook. It stores metadata and does sanity
checks.
.TP
-.B pre-apt
-This is called by apt's DPkg::Pre-Install-Pkgs hook. It allows committing
-any uncommitted changes before the apt run.
+.B pre-install
+This is called by apt's DPkg::Pre-Install-Pkgs hook, or by equivilant hooks
+of other package managers. It allows committing any uncommitted changes before
+packages are installed, upgraded, etc.
.TP
-.B post-apt
-This is called by apt's DPkg::Post-Invoke hook. It commits changes made by
-packages into the repository. (You can also call this by hand after running
-dpkg by hand.)
+.B post-install
+This is called by apt's DPkg::Post-Invoke hook, or by equivilant hooks
+of other package managers. It commits changes made by packages into the
+repository. (You can also call this by hand after running dpkg by hand.)
.SH AUTHOR
Joey Hess, <joey@kitenet.net>.
diff --git a/etckeeper.conf b/etckeeper.conf
index 74bb34a..4a22a65 100644
--- a/etckeeper.conf
+++ b/etckeeper.conf
@@ -2,3 +2,9 @@
# You could for exemple use "-e" if you want to edit all commit messages
# before committing.
#GIT_COMMIT_OPTIONS="-e"
+
+# The high level package manager that's being used.
+HIGHLEVEL_PACKAGE_MANAGER=apt
+
+# The low-level package manager that's being used.
+LOWLEVEL_PACKAGE_MANAGER=dpkg
diff --git a/init.d/50git-ignore b/init.d/50git-ignore
index f931592..de58ed5 100755
--- a/init.d/50git-ignore
+++ b/init.d/50git-ignore
@@ -1,11 +1,14 @@
#!/bin/sh
set -e
if [ ! -e .gitignore ]; then
- cat >.gitignore <<EOF
-*~
-
+ if [ "$LOWLEVEL_PACKAGE_MANAGER" = dpkg ]; then
+ cat >.gitignore <<EOF
# new and old versions of conffiles, stored by dpkg
*.dpkg-*
+EOF
+ fi
+ cat >>.gitignore <<EOF
+*~
# mount(8) records system state here, no need to keep these in git
blkid.tab
diff --git a/post-apt.d/README b/post-apt.d/README
deleted file mode 100644
index befa5c0..0000000
--- a/post-apt.d/README
+++ /dev/null
@@ -1,2 +0,0 @@
-Files in this directory are run after apt has run. They should commit
-changes and new files in /etc to repository.
diff --git a/post-apt.d/10git-test b/post-install.d/10git-test
index e72f195..e72f195 100755
--- a/post-apt.d/10git-test
+++ b/post-install.d/10git-test
diff --git a/post-apt.d/30git-add b/post-install.d/30git-add
index 79aa406..79aa406 100755
--- a/post-apt.d/30git-add
+++ b/post-install.d/30git-add
diff --git a/post-apt.d/40git-rm b/post-install.d/40git-rm
index 680dac0..680dac0 100755
--- a/post-apt.d/40git-rm
+++ b/post-install.d/40git-rm
diff --git a/post-apt.d/50git-commit b/post-install.d/50git-commit
index 1a5c55a..78247ca 100755
--- a/post-apt.d/50git-commit
+++ b/post-install.d/50git-commit
@@ -2,10 +2,7 @@
set -e
if [ -d .git ]; then
-
- # TODO: figure out what packages were acted on by the apt run, and
- # include that info in the commit message
- message="committing changes after apt run"
+ message="committing changes after $HIGHLEVEL_PACKAGE_MANAGER run"
# ignore exit code since it exits nonzero if there is nothing to do
git commit $GIT_COMMIT_OPTIONS -m "$message" || true
diff --git a/post-install.d/README b/post-install.d/README
new file mode 100644
index 0000000..62f4f9c
--- /dev/null
+++ b/post-install.d/README
@@ -0,0 +1,2 @@
+Files in this directory are run after packages are installed, upgraded, etc.
+They should commit changes and new files in /etc to repository.
diff --git a/pre-apt.d/README b/pre-apt.d/README
deleted file mode 100644
index 47001b4..0000000
--- a/pre-apt.d/README
+++ /dev/null
@@ -1,2 +0,0 @@
-Files in this directory are run before apt is run. This is mostly used for
-sanity checks, ie, does /etc have any uncommitted changes?
diff --git a/pre-apt.d/50uncommitted-changes b/pre-install.d/50uncommitted-changes
index d39401c..f8811ad 100755
--- a/pre-apt.d/50uncommitted-changes
+++ b/pre-install.d/50uncommitted-changes
@@ -12,7 +12,7 @@ if [ -d .git ] && ! LANG=C git-status 2>&1 | grep -q "working directory clean";
db_get etckeeper/unclean
if [ "$RET" = true ]; then
git add .
- if ! git commit $GIT_COMMIT_OPTIONS -m "saving uncommitted changes in /etc prior to apt run"; then
+ if ! git commit $GIT_COMMIT_OPTIONS -m "saving uncommitted changes in /etc prior to $HIGHLEVEL_PACKAGE_MANAGER run"; then
db_input critical etckeeper/commit_failed || true
db_go || true
db_reset etckeeper/commit_failed || true
diff --git a/pre-install.d/README b/pre-install.d/README
new file mode 100644
index 0000000..a3b5a57
--- /dev/null
+++ b/pre-install.d/README
@@ -0,0 +1,3 @@
+Files in this directory are run before packages are installed, upgraded,
+etc. This is mostly used for sanity checks, ie, does /etc have any
+uncommitted changes?