[user]
    email = morten@linderud.pw
    name = Morten Linderud
    signingkey = 9FECBE16
[commit]
    gpgSign = true
    verbose = true
[format]
    signOff = true
[color]
    ui = auto
[alias]
    s = status
    co = checkout

    dt = difftool
    dc = diff --cached

    mt = mergetool

    aa = add --all
    ap = add -p

    b = branch -vv
    ba = branch -avv
    rem = remote -v

    ff = merge --ff-only
    pullff = pull --ff-only
    noff = merge --no-ff
    fa = fetch --all

    c = commit -s -S
    amend = c --amend
    fixup = "!git c --fixup=$(git rev-parse HEAD)"
    frbi = "!f() { git rebase -i $(git log --pretty=oneline --color=always | fzf --ansi | awk '{print $1}')^ ; }; f"
    autosquash = "!git rebase -i --autosquash $(git rev-parse --abbrev-ref origin/HEAD)"
    rr = "!git rebase -i $(git rev-parse --abbrev-ref origin/HEAD)"


    l = log --all --color --graph --pretty=format:'%Cred%h%Creset %G?%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
    hd = show -p --pretty="tformat:"
    files = diff-tree --no-commit-id --name-only -r
    edit = "!vim $(git ls-files -m) -p"
    edit-commit = !vim `git diff-tree --no-commit-id --name-only -r  ${1-$(git rev-parse HEAD)}`

    pull-pr = "!f() { \
        if git rev-parse --verify remotes/${2-origin}/pull/${1} &> /dev/null; then \
            git fetch ${2:-origin} pull/\"${1}\"/head:pr-\"${1}\"; \
        elif git rev-parse --verify remotes/${2-origin}/merge-requests/${1} &> /dev/null; then \
            git fetch ${2:-origin} merge-requests/${1}/head:pr-${1}; \
        fi; \
        }; f"
    pr = "! f() { gh pr list | fzf | awk '{print $1}' | xargs -I '{}' git pull-pr '{}' ${1:-origin}; }; f"
    sl = "!git shortlog --no-merges $(git describe --tags --abbrev=0)..HEAD"

    difftex = difftool -y -t latex

    jump = "!/usr/share/git/git-jump/git-jump"

    unstage = reset HEAD --
    recent = for-each-ref --count=10 --sort=-committerdate refs/heads/ --format="%(refname:short)"
    overview = log --all --oneline --no-merges
    recap = !git log --all --oneline --no-merges --author=${1-$(git config user.email)}
    today = !git log --all --since=00:00:00 --oneline --no-merges --author=${1-$(git config user.email)}
    changelog = !git log --oneline --no-merges ${1-$(git describe --abbrev=0)}..HEAD
    upstream = !git log --oneline --no-merges HEAD..${1-$(git branch -lvv | perl -ne '/^\\*.*\\[(.*?)\\]/ and print "$1\n"')}
    local = !git log --oneline --no-merges ${1-$(git branch -lvv | perl -ne '/^\\*.*\\[(.*?)\\]/ and print "$1\n"')}..HEAD
    graph = log --oneline --graph --all --decorate --date=iso
    ignored = status --ignored

# Worktree
    wt = "!f() { git worktree add -b morten/$1 ${PWD}-$1 $(git symbolic-ref --short HEAD); cd ${PWD}-$1; }; f"
    wl = "!f() { git worktree list | fzf --height 40% --reverse; }; f"
    

[core]
    excludesfile = ~/.config/git/ignore
[remote "origin"]
    fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
    fetch = +refs/pull/*/head:refs/remotes/origin/pull/*
; [remote "upstream"]
;     fetch = +refs/merge-requests/*/head:refs/remotes/upstream/merge-requests/*
;     fetch = +refs/pull/*/head:refs/remotes/upstream/pull/*
[init]
    template = ~/.config/git/templates
    defaultBranch = master
[diff]
    tool = vimdiff
[difftool]
    prompt = false
[difftool "vimdiff"]
    cmd = vim -d $BASE $LOCAL 
[difftool.latex]
    cmd = latexdiff --flatten "$LOCAL" "$REMOTE"
[merge]
    tool = vimdiff
    conflictStyle = zdiff3
[mergetool "fugitive3"]
    cmd = vim -f -c \"Gdiffsplit :1 | Gvdiffsplit!\" \"$MERGED\"
[mergetool]
    prompt = false
    keepBackup = false
[push]
    default = current
[pull]
    rebase = false
[rebase]
    autoStash = true
[sendemail]
    from = "Morten Linderud <morten@linderud.pw>"
    smtpserver = "/usr/bin/msmtp"
    annotate = true
    confirm = always
    envelopesender = auto
[includeIf "gitdir:~/jobb/"]
    path = ~/jobb/.gitconfig
[includeIf "gitdir:~/.config/home.git"]
    path = ~/.config/git/config.home
[includeIf "gitdir:~/Git/PKGBUILD/community-checkout"]
    path = ~/.config/git/config.community
[includeIf "gitdir:~/tmp/blug/alice/"]
    path = ~/.config/git/config.blug
[tig]
    line-graphics = utf-8
    main-view-date = relative-compact
    main-view = line-number:no,interval=5 id:no date:default author:full commit-title:yes,graph=no,refs,overflow=no
    refresh-mode = periodic
    refresh-interval = 5
[tig "bind"]
    status = C !git c
