###############################
#                             #
#     My Linux .gitconfig     #
#                             #
#        Last revision:       #
#          2020-12-04         #
#                             #
###############################

[alias]
	; List aliases
	aliases = config --get-regexp alias

	; List all the contributors with commit amount
	contributors = shortlog --summary --numbered

	; Output verbose info about branches and tags
	branches = branch -avv

	; List all tags
	tags = tag -l

	; Pretty logs
	plog = log --graph --decorate --all

	; Pretty grep
	gcommit = log --graph --decorate --grep

[core]
	# Your path might be different, but unlikely
	# -- this needs to manually be set because
	# -- GIT for Windows has it's own vim
	# -- so it will run that instead.
	; Set the editor to be used by GIT
	editor = ~/.local/bin/lvim

	; Custom .gitignore
	excludesfile = ~/.gitignore

	; Treat trailing whitespaces and spaces before tabs as an error
	whitespace = space-before-tab,-indent-with-non-tab,trailing-space

[color]
	; Use colors in GIT commands
	ui = auto

[commit]
	; https://help.github.com/articles/signing-commits-using-gpg/
	gpgsign = true

[tag]
	gpgsign = true

[diff]
	# Your path might be different, but unlikely
	# -- this needs to manually be set because
	# -- GIT for Windows has it's own vim
	# -- so it will run that instead.
	; Set the editor to be used by GIT
	tool = nvimdiff

[difftool]
	prompt = true

[difftool "nvimdiff"]
	cmd = "~/.local/bin/lvim -d \"$LOCAL\" \"$REMOTE\""

[merge]
	# Your path might be different, but unlikely
	# -- this needs to manually be set because
	# -- GIT for Windows has it's own vim
	# -- so it will run that instead.
	tool = edit -d

	; https://git-scm.com/docs/git-merge#_how_conflicts_are_presented
	conflictstyle = diff3

[mergetool]
	; https://www.git-scm.com/docs/git-mergetool#Documentation/git-mergetool.txt---no-prompt
	prompt = false

[push]
	; https://stackoverflow.com/questions/21839651/git-what-is-the-difference-between-push-default-matching-and-simple
	default = simple

	; git-push pushes relevant annotated tags when pushing branches out
	followTags = true

[user]
	name = Alexandre Cavalheiro S. Tiago da Silva
	email = contact@thewizard.link
	signingkey = A1D3A2B4E14BD7C0445BB749A5767B54367CFBDF

[pull]
	ff = only

[init]
	defaultBranch = main