[core]
  attributesFile = ~/.config/git/.gitattributes
  excludesFile = ~/.config/git/.gitignore
  hooksPath = ~/.config/git/hooks

  # Whitespace types to treat as errors.
  # blank-at-eol: looks for spaces at EOL.
  # -blank-at-eof: allows blank lines at EOF.
  # space-before-tab: looks for spaces immediately before tabs at the beginning
  #   of the line.
  whitespace = blank-at-eol,-blank-at-eof,space-before-tab

  # Prevent showing files whose names contain non-ASCII symbols as unversioned.
	# http://michael-kuehnel.de/git/2014/11/21/git-mac-osx-and-german-umlaute.html
	precomposeunicode = false

  # Speed up commands involving untracked files such as `git status`.
	# https://git-scm.com/docs/git-update-index#_untracked_cache
	untrackedCache = true

  # Use delta.
  pager = delta

[user]
  # Do not guess the user's identity.
  useConfigOnly = true

[include]
  path = ~/.config/git/config.delta-themes

[delta]
  navigate = true
  syntax-theme = {{ .drapeau.colorscheme }}
  features = mellow-barbet
  true-color = always
  hyperlinks = true

[color]
  diff = always

[pretty]
  lo  = tformat:%C(auto)%h%C(reset)%C(auto)%d%C(reset) %s %C(italic blue)%ad%C(reset) %C(241)%aN%C(reset)
  lc  =  format:%C(auto)%h%C(reset) %C(white)-%C(reset) %C(italic blue)%ad%C(reset) %C(italic cyan)(%ar)%C(reset)%C(auto)%d%C(reset)%n %C(white)⤷%C(reset) %s %C(241)- %aN <%aE>%C(reset)%n
  lt  =  format:%C(auto)%h%C(reset) %C(white)-%C(reset) %C(italic blue)%ad%C(reset) %C(italic cyan)(%ar)%C(reset)%C(auto)%d%C(reset)%n %C(white)⤷%C(reset) %s %C(241)- %aN <%aE>%C(reset)%n%w(0,7,7)%+(trailers:only,unfold)
  lf  =  format:%C(auto)%h%C(reset)%C(auto)%d%C(reset)   %C(italic 239)[P: %p] [T: %t]%C(reset)%n%C(white)Author:%C(reset)   %aN %C(241)<%aE>%C(reset)%n          %C(italic blue)%ad%C(reset) %C(italic cyan)(%ar)%C(reset)%n%C(white)Commit:%C(reset)   %cN %C(241)<%cE>%C(reset)   %C(italic 239)[GPG: %G?% GK]%C(reset)%n          %C(italic blue)%cd%C(reset) %C(italic cyan)(%cr)%C(reset)%w(0,4,4)%n%n%C(bold)%s%C(reset)%n%n%-b%n%n%-N%n
  rlo = tformat:%C(auto)%h%C(reset) %C(bold yellow)(%C(magenta)%gd%C(bold yellow))%C(reset)%C(auto)%d%C(reset) %gs %C(italic blue)%ad%C(reset) %C(241)%aN%C(reset)
  rlc =  format:%C(auto)%h%C(reset) %C(white)-%C(reset) %C(italic blue)%ad%C(reset) %C(italic cyan)(%ar)%C(reset)%C(auto)%d%C(reset)%n %C(white)⤷%C(reset) %s %C(241)- %aN <%aE>%C(reset)%n %C(white)⤷%C(reset) %C(bold yellow)(%C(magenta)%gd%C(bold yellow))%C(reset) %gs %C(241)- %gN <%gE>%C(reset)%n
  rlt =  format:%C(auto)%h%C(reset) %C(white)-%C(reset) %C(italic blue)%ad%C(reset) %C(italic cyan)(%ar)%C(reset)%C(auto)%d%C(reset)%n %C(white)⤷%C(reset) %s %C(241)- %aN <%aE>%C(reset)%n %C(white)⤷%C(reset) %C(bold yellow)(%C(magenta)%gd%C(bold yellow))%C(reset) %gs %C(241)- %gN <%gE>%C(reset)%n%w(0,7,7)%+(trailers:only,unfold)
  rlf =  format:%C(auto)%h%C(reset) %C(bold yellow)(%C(magenta)%gd%C(bold yellow))%C(reset)%C(auto)%d%C(reset)   %C(italic 239)[P: %p] [T: %t]%C(reset)%n%C(white)Author:%C(reset)   %aN %C(241)<%aE>%C(reset)%n          %C(italic blue)%ad%C(reset) %C(italic cyan)(%ar)%C(reset)%n%C(white)Commit:%C(reset)   %cN %C(241)<%cE>%C(reset)   %C(italic 239)[GPG: %G?% GK]%C(reset)%n          %C(italic blue)%cd%C(reset) %C(italic cyan)(%cr)%C(reset)%n%C(white)Reflog:%C(reset)   %gN %C(241)<%gE>%C(reset)%n          %C(italic)%gs%C(reset)%w(0,4,4)%n%n%C(bold)%s%C(reset)%n%n%-b%n%n%-N%n

[include]
  path = ~/.config/git/config.aliases

[init]
  defaultBranch = main

[interactive]
  diffFilter = delta --color-only

[status]
  showstash = true

[commit]
  gpgSign = true

[tag]
  gpgSign = true

[push]
  autoSetupRemote = true

  # Push tags automatically.
  followTags = true

[rebase]
  autosquash = true

[merge]
  # Include summaries of merged commits in merge commit messages.
  log = true

  # delta.
  conflictstyle = diff3

[mergetool]
  keepBackup = false
  hideResolved = true

[diff]
  # Detect when files are copied as well as renamed.
  renames = copies

  # delta
  colorMoved = default

[apply]
  # Fix whitespace errors when applying a patch, as specified in
  # core.whitespace.
  whitespace = true

[branch]
  # Show most recently changed branches first.
  sort = -committerdate

  autoSetupMerge = simple

[url "git@github.com:"]
	insteadOf = @gh:

[url "aur@aur.archlinux.org"]
  insteadOf = @aur:

[url "https://github.com/"]
	insteadOf = gh://

[url "https://aur.archlinux.org/"]
	insteadOf = aur://

[credential "https://github.com"]
	helper = !/usr/bin/gh auth git-credential

[credential "https://gist.github.com"]
	helper = !/usr/bin/gh auth git-credential

[include]
  path = ~/.config/git/config.local
