I'm using Arch Linux, and the version number of etckeeper is 1.18.20-2.
Background information: I utilize GitHub to automatically push my /etc directory to a repository. However, when etckeeper uses my GitHub account's git author information, it affects the contribution graph. Unfortunately, GitHub doesn't offer an option to exclude a single repository from the contribution graph. As a result, I decided to modify the git author.
Modifying the code directly is not considered good practice. Instead, I chose to modify the /etc/etckeeper/etckeeper.conf
file. After the modification, the configuration looks like this:
GIT_COMMIT_OPTIONS="--author=\"username <username@localhost>\""
When I execute the etckeeper commit
command, it displays the following error:
fatal: --author '"username' is not 'Name <email>' and matches no existing author
Upon inspecting the code, I discovered that the commit.d/50vcs-commit script requires fixing. Specifically, double quotes need to be added around $GIT_COMMIT_OPTIONS. After including the double quotes, etckeeper functions as expected.
I applied the same modification to $HG_COMMIT_OPTIONS, $BZR_COMMIT_OPTIONS, and $DARCS_COMMIT_OPTIONS. The resulting patch is provided below:
diff --git a/commit.d/50vcs-commit b/commit.d/50vcs-commit
index a76eb7e..8ac8581 100755
--- a/commit.d/50vcs-commit
+++ b/commit.d/50vcs-commit
@@ -109,9 +109,9 @@ if [ "$VCS" = git ] && [ -d .git ]; then
fi
if [ -n "$logfile" ]; then
- git $GIT_GC_OPTIONS commit $GIT_COMMIT_OPTIONS -F "$logfile"
+ git $GIT_GC_OPTIONS commit "$GIT_COMMIT_OPTIONS" -F "$logfile"
else
- git $GIT_GC_OPTIONS commit $GIT_COMMIT_OPTIONS
+ git $GIT_GC_OPTIONS commit "$GIT_COMMIT_OPTIONS"
fi
elif [ "$VCS" = hg ] && [ -d .hg ]; then
if [ -n "$USER" ]; then
@@ -123,9 +123,9 @@ elif [ "$VCS" = hg ] && [ -d .hg ]; then
export HGUSER
fi
if [ -n "$logfile" ]; then
- hg commit $HG_COMMIT_OPTIONS -l "$logfile"
+ hg commit "$HG_COMMIT_OPTIONS" -l "$logfile"
else
- hg commit $HG_COMMIT_OPTIONS
+ hg commit "$HG_COMMIT_OPTIONS"
fi
elif [ "$VCS" = bzr ] && [ -d .bzr ]; then
if [ -z "$EMAIL" ] && [ -n "$USER" ]; then
@@ -135,17 +135,17 @@ elif [ "$VCS" = bzr ] && [ -d .bzr ]; then
bzr whoami >/dev/null 2>&1 || export EMAIL="$ORIG_USER <$ORIG_USER@$hostname>"
fi
if [ -n "$logfile" ]; then
- bzr commit $BZR_COMMIT_OPTIONS -F "$logfile"
+ bzr commit "$BZR_COMMIT_OPTIONS" -F "$logfile"
else
- bzr commit --quiet $BZR_COMMIT_OPTIONS
+ bzr commit --quiet "$BZR_COMMIT_OPTIONS"
fi
elif [ "$VCS" = darcs ] && [ -d _darcs ]; then
if [ -z "$USER" ]; then
USER=root
fi
if [ -n "$logfile" ]; then
- darcs record --author="$USER" $DARCS_COMMIT_OPTIONS --logfile="$logfile"
+ darcs record --author="$USER" "$DARCS_COMMIT_OPTIONS" --logfile="$logfile"
else
- darcs record --author="$USER" $DARCS_COMMIT_OPTIONS
+ darcs record --author="$USER" "$DARCS_COMMIT_OPTIONS"
fi
fi