[alias]
    audit = "!f() { echo '=== Churn ==='; git churn; echo; echo '=== Contributors ==='; git who; echo; echo '=== Bug hotspots ==='; git bugs; echo; echo '=== Monthly pulse ==='; git pulse; echo; echo '=== Firefighting ==='; git firefight; true; }; f"
    br = branch
    bugs = !git log -i -E --grep=\"fix|bug|broken\" --name-only --format='' | sort | uniq -c | sort -nr | head -20
    churn = !git log --format=format: --name-only --since=\"1 year ago\" | sort | uniq -c | sort -nr | head -20
    ci = commit -v
    co = checkout
    dc = diff --cached --word-diff=color
    di = diff --word-diff=color
    firefight = !git log --oneline --since=\"1 year ago\" | grep -iE 'revert|hotfix|emergency|rollback'
    gl = log --decorate --graph --pretty=oneline
    glog = log --decorate --graph
    pulse = !git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c
    st = status -bs
    up = "!git remote update -p; git merge --ff-only @{u}"
    who = shortlog -sn --no-merges
[blame]
    # cannot set to work optionally.
    # ignoreRevsFile = .git-blame-ignore-revs
[color]
    ui = auto
[column]
    ui = auto
[core]
    preloadindex = yes
[diff]
    algorithm = histogram
[diff "sqlite3"]
    binary = true
    textconv = "echo '.dbconfig trusted_schema no\n.dump' | sqlite3"
[init]
    defaultBranch = main
[merge]
    tool = vimdiff
[pull]
    autoSetupRemote = true
    rebase = true
[push]
    autoSetupRemote = true
    default = current
[rerere]
    enabled = true
[submodule]
    recursive = true
[tag]
    sort = version:refname
[user]
    useConfigOnly = true
#
[include]
    path = ~/.gitconfig.local
