X-Git-Url: https://ruderich.org/simon/gitweb/?p=config%2Fdotfiles.git;a=blobdiff_plain;f=vcs%2Fgitconfig.in;fp=vcs%2Fgitconfig.in;h=50d88a9191c495a5cddd5f3d645e929c3983a6e9;hp=0000000000000000000000000000000000000000;hb=40b6f5b91142a2893422479122704dd7ba91fe99;hpb=e64f5aca9dff4e4a0cd8ced5d8131a06addb85ab diff --git a/vcs/gitconfig.in b/vcs/gitconfig.in new file mode 100644 index 0000000..50d88a9 --- /dev/null +++ b/vcs/gitconfig.in @@ -0,0 +1,249 @@ +# Global Git configuration file. + +# Copyright (C) 2011-2017 Simon Ruderich +# +# This file is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this file. If not, see . + + +[user] + name = Simon Ruderich + email = simon@ruderich.org + +[color] + ui = auto + +[color "diff"] + # Meta information. + meta = yellow bold + # Hunk header. + frag = magenta bold + # Function in hunk header. + func = blue bold + # Removed lines. + old = red bold + # Added lines. + new = green bold + # Commit headers. + commit = cyan + +[color "grep"] + # GNU grep-like colors. + filename = magenta + linenumber = green + +[core] + editor = vim + # Global gitattributes file. Thanks to canton7 in #git on Freenode + # (2011-11-09 13:23 CET). + attributesfile = PWD/gitattributes + +[pager] + # Use pager for the following commands. + status = true + tag = true + +[interactive] + # Don't require in interactive commands which require only a + # single key, for example `git add --patch`. Requires Perl module + # Term::Readkey. + singlekey = true + +[alias] + ## Shortcuts for often used commands. + # + ## Local. + c = commit --verbose + ca = commit --verbose --amend + cad = commit --verbose --amend --date= + d = diff + dw = diff --color-words + ds = diff --stat + dc = diff --cached + dcw = diff --cached --color-words + dcs = diff --cached --stat + g = grep + gi = grep --ignore-case + s = status + l = log + ls = log --stat + lp = log --patch + lpw = log --patch --color-words + ld = show --date=short -s --pretty='format:%h (\"%s\", %ad)' # describe + a = add + ap = add --patch + au = add --update + rs = reset + rsh = reset --hard + rsp = reset --patch + rv = revert + cl = clean -ndx + clf = clean -fdx + ## Branches. + co = checkout + b = branch -a -v + br = branch + m = merge + mo = merge origin/master + re = rebase + rei = rebase --interactive + rec = rebase --continue + cp = cherry-pick + ## Submodules. + sm = submodule + ## Remote. + f = fetch + t = tag + p = push + # Parallel git remote update. Also strips unnecessary output. + ru = "! git remote \ + | xargs -d '\\n' -n1 -P0 git remote update 2>&1 \ + | sed '/^$/d; \ + /^Please make sure you have the correct access rights$/d; \ + /^and the repository exists\\.$/d;'" + # Push to all remotes. Thanks to albel727 in #git on Freenode + # (2011-06-04 16:06 CEST) for the idea. Modified to push in parallel + # and to strip unnecessary output. + rp = "! git remote \ + | xargs -d '\\n' -n1 -P0 git push 2>&1 \ + | sed '/^$/d; \ + /^Please make sure you have the correct access rights$/d; \ + /^and the repository exists\\.$/d;'" + ## Patches. + fp = format-patch + ## Maintenance. + # (Redirection of stderr is necessary to prevent missing output with + # my "color stderr" solution in Zsh.) + fs = ! git fsck --strict --full 2>&1 + fg = ! git fs && git gc --aggressive 2>&1 # fsck and compress repo + ## Misc. + sl = stash list + ss = stash save + ssk = stash save --keep-index + ssu = stash save --include-untracked + sa = stash apply --index + sp = stash pop --index + + ## Custom commands. + # + # tig-like log view. Similar to the following but with author/date + # information. --pretty=format is not used because it doesn't allow + # precise enough control over formats and colors. + # + # tig = log --pretty=oneline --graph --all --decorate --abbrev-commit + tig = ! PWD/bin/tig.pl + + # Create backup of uncommitted and untracked changes. + ssb = "! git stash save --include-untracked \ + \"Backup on $(LANG=C date '+%a, %d %b %Y %H:%M:%S %z')\" \ + >/dev/null \ + && git stash apply >/dev/null" + + # Display list and content of untracked files. Untracked directories + # and symbolic links are only listed. + u = "! git ls-files --other --exclude-standard --directory -z \ + | xargs -0 sh -c '\ + for x; do \ + printf \"\\033[1;33m-> %s\\033[0m:\" \"$x\"; \ + if test -d \"$x\"; then \ + echo \" directory\"; \ + elif test -h \"$x\"; then \ + echo \" symbolic link\"; \ + else \ + echo; \ + cat \"$x\"; \ + fi; \ + echo; \ + done' argv0 \ + | less" + +[diff] + # Detect copies and renames. + renames = copy + + # Diff algorithm to use. + algorithm = histogram + + # Highlight moved code in a different color. + colorMoved = zebra + + # Replace "a/" and "b/" prefix in diffs with characters describing the + # context (e.g. "i/"ndex and "w/"ork tree). + mnemonicprefix = true + + # Change the definition of a word as used by diff --color-words to be + # shorter (not only spaces) and thus simplify the generated diffs. + # Words ([a-zA-Z0-9_]+) are matched, or a single non-word character + # ([^a-zA-Z0-9_]), therefore changes to words are shown in complete + # (e.g. from "word" to "newword" as "[-word-]{+newword+}"), but + # changes to non-word characters are shown character wise (e.g. from + # "==" to "!=" as "[-=-]{+!+}="); [-..-] is removal, {+..+} is + # addition. See t/ for some tests and examples. + wordRegex = [a-zA-Z0-9_]+|[^a-zA-Z0-9_] + +# Allow diffing of some binary files. +# +# "sh -c '..' ARGV0" is used when the programs require additional arguments +# which are passed after ARGV0 by git. +[diff "gzip"] + textconv = gzip -d -c +[diff "pdf"] + textconv = sh -c 'exec pdftotext "$@" -' ARGV0 +[diff "sqlite"] + textconv = sh -c 'exec sqlite3 "$@" .dump' ARGV0 + +[log] + # Display branches/tag names in log (same as log's --decorate option). + decorate = short + # If a single file is given to `git log`, automatically use --follow. + follow = true + +[merge] + tool = vimdiff + + # Merge upstream branch if `git merge` is called without arguments. + defaultToUpstream = true + +[rebase] + # Use single-letter command names in git rebase -i which are faster to + # change. + abbreviateCommands = true + +[push] + # When running git push without a refspec push only the current + # branch, see man page git-config(1) for details. Default since Git + # 2.0. + default = simple + +[format] + # When using git format-patch use threads and add all patches as + # replies to the first one. + thread = shallow + +[transfer] + # Automatically fsck objects when receiving them (respected by git + # receive-pack and git fetch (>= 1.7.8, for fetch)). + fsckObjects = true + +[advice] + # Disable annoying advice messages. + waitingForEditor = false + + +# NON-GIT SETTINGS + +[annex] + # My SSH config already uses ControlMaster where appropriate. + sshcaching = false + +# vim: ft=gitconfig