summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2020-05-28 18:20:35 -0400
committerAndrew Cady <d@jerkface.net>2020-05-28 18:25:26 -0400
commit9fbd4a9ea4ce0ef8df6b661b0858bfb16ba8d326 (patch)
tree2a3dea0bdf43dedba8e040debbd42d7ff17c622f
parentbff2ac56b6c5cc969a5219c5a5bf608439436983 (diff)
Dynmically generate ~/.gitconfig
Ancient versions of 'git' would use the unix passwd identity as the default author/committer. This dynamically-generated ~/.gitconfig does the same. Might as well set excludesfile = ~/.config/git/ignore
-rw-r--r--Makefile3
-rw-r--r--dot/gitconfig14
-rwxr-xr-xsrc/gitconfig.sh29
3 files changed, 32 insertions, 14 deletions
diff --git a/Makefile b/Makefile
index 9609f9b..691e8a9 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,9 @@ DOTFILES := $(shell find dot \( -type f -o -type l \) -not -name '.*')
6 6
7DESTINATIONS = $(DOTFILES:dot/%=${HOME}/.%) 7DESTINATIONS = $(DOTFILES:dot/%=${HOME}/.%)
8 8
9${HOME}/.gitconfig:
10 ./src/gitconfig.sh
11
9EXECUTABLES = $(filter dot/local/bin/%, $(DOTFILES)) 12EXECUTABLES = $(filter dot/local/bin/%, $(DOTFILES))
10 13
11$(HOME)/.%: dot/% 14$(HOME)/.%: dot/%
diff --git a/dot/gitconfig b/dot/gitconfig
deleted file mode 100644
index 6d9e2ed..0000000
--- a/dot/gitconfig
+++ /dev/null
@@ -1,14 +0,0 @@
1[user]
2 email = d@jerkface.net
3 name = Andrew Cady
4[sendemail]
5 from = Andrew Cady <d@jerkface.net>
6 smtpencryption = tls
7 smtpserver = smtp.gmail.com
8 smtpuser = andrew.cady@gmail.com
9 smtpserverport = 587
10 suppressfrom = yes
11[credential]
12 helper = cache
13[core]
14 excludesfile = /home/d/.config/git/ignore
diff --git a/src/gitconfig.sh b/src/gitconfig.sh
new file mode 100755
index 0000000..3a7e824
--- /dev/null
+++ b/src/gitconfig.sh
@@ -0,0 +1,29 @@
1#!/bin/sh
2target=~/.gitconfig
3if [ -z "$OVERWRITE_GITCONFIG" ] && [ -e "$target" ]
4then
5 exit
6fi
7
8user=$(id -un) || exit
9[ "$user" ] || exit
10email=${user}@$(hostname --fqdn) || exit
11[ "$email" ] || exit
12name=$(getent passwd "$user" | cut -d: -f2) || : ok
13temp=$(mktemp ~/.gitconfig.tmp.XXX) || exit
14[ "$temp" ] || exit
15
16gitconfig()
17{
18cat <<END
19[user]
20 email = ${email}
21 name = ${name:-$email}
22[core]
23 excludesfile = ~/.config/git/ignore
24END
25}
26
27gitconfig > "$temp" &&
28 mv "$temp" "$target" ||
29 rm -f "$temp"