[core]
excludesfile = "~/.gitignore"
editor = nvim
pager = diff-so-fancy | less -+R -nBJFXRgiM -h512 -x4

[user]
name = Daniel Lundin
email = dln@eintr.org

[column]
	ui = auto

[push]
default = tracking

[branch "master"]
rebase = true

[init]
templatedir = ~/.git_template

[alias]
b = branch -va
f = fetch
fa = fetch --all
t = tag
d = diff --stat -p -C
ds = diff --staged --stat -p -C
patch = !git --no-pager diff --no-color
co = checkout
st = status -sb
stu = status -sb --untracked=no
pullr = pull --rebase
wc = whatchanged --abbrev-commit --date=relative --date-order --pretty='format:%Cgreen%h %Cblue%ar %Credby %an%Creset -- %s' -n 45

ll = log --graph --date=relative --topo-order --pretty='format:%C(yellow)%h%C(yellow)%d %Cblue%ar %Cgreenby %an%Creset -- %s'
lla = log --graph --date=relative --topo-order --pretty='format:%Cgreen%h %Cblue%ar %Credby %an%Creset -- %s' --all
gl = log --decorate --graph --abbrev-commit --color --color-words --topo-order --pretty=medium 
gla = log --decorate --graph --abbrev-commit --color --color-words --topo-order --pretty=medium --all
sl = log --decorate --graph --abbrev-commit --color --topo-order --pretty=oneline
sla = log --decorate --graph --abbrev-commit --color --topo-order --pretty=oneline --all
#lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
plog = !GIT_PAGER='less -n +/^commit\\ \\[0-9a-f\\]+' git log --color --patch-with-stat
lg = !"git lg1"
lg1 = !"git lg1-specific --all"
lg2 = !"git lg2-specific --all"
lg3 = !"git lg3-specific --all"

lg1-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
lg2-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(auto)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
lg3-specific = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n''          %C(white)%s%C(reset)%n''          %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)'

cdiff = diff --color
diffs = diff --staged --stat -p
diffc = diff --staged --stat -p
vimdiff = difftool -t vimdiff
meld = difftool -d -t meld
kdiff3 = difftool -d -t kdiff3

guilt = "!f(){ git log --pretty='format:%an <%ae>' $@ | sort | uniq -c | sort -rn; }; f"
scat = show $1:`git ls-files --full-name $2`
	serve = daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/

[merge]
tool = meld

[mergetool]
prompt = false

[diff]
renames = true
tool = kdiff3

[difftool]
prompt = false

[difftool "kdiff3"]
cmd = kdiff3 $LOCAL $REMOTE
trustExitCode = false

[difftool "p4merge"]
cmd = p4merge $LOCAL $REMOTE

[color]
ui = auto
branch = auto
diff = auto
status = auto

[color "branch"]
current = yellow reverse
local = yellow
remote = green

[color "diff"]
meta = blue bold
frag = magenta bold
old = red 
new = green 

[color "status"]
added = blue bold
changed = green bold
untracked = cyan bold

[apply]
whitespace = nowarn

[pack]
threads = 0

[blame]
date = relative

[tig]
show-rev-graph = yes
show-refs = yes
line-graphics = yes

[tig "bind"]
generic = G !echo
stage = G !echo
main = G !echo

[tig "color"]
cursor = black green dim
author = green default normal
main-revgraph = yellow default normal
pp-commit = magenta default bold
diff-chunk = magenta default bold

# vim: ft=conf:
[diff-so-fancy]
	useUnicodeRuler = true
	stripLeadingSymbols = true
[hub]
	protocol = git