# Global Git configuration file. # Copyright (C) 2011-2013 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 . dnl Load m4 macros. include(../lib.m4) [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. function = magenta bold # Removed lines. old = red bold # Added lines. new = green bold # Commit headers. commit = cyan [core] editor = vim # Global gitattributes file. Thanks to canton7 in #git on Freenode # (2011-11-09 13:23 CET). attributesfile = PWD/gitattributes # Use pager for the following commands. [pager] status = yes tag = yes [interactive] # Don't require in interactive commands which require only a # single key, for example `git add --patch`. Requires Perl module # Term::Readkey. singlekey = yes [alias] ## Shortcuts for often used commands. # ## Local. c = commit --verbose ca = commit --verbose --amend cad = commit --verbose --amend --date= d = diff PATIENCE dw = diff PATIENCE --color-words dc = diff PATIENCE --cached dcw = diff PATIENCE --cached --color-words ds = diff --stat s = status l = log ls = log --stat lp = log --patch PATIENCE lpw = log --patch PATIENCE --color-words a = add ap = add --patch au = add --update ## Branches. co = checkout b = branch -a -v m = merge mo = merge origin/master ## 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 sp = stash pop ## 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 # 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. # # `pdftotext-` is a wrapper around pdftotext which writes to stdout. # `sqlite3dump` is a wrapper calling `sqlite3 database-file .dump`. [diff "gzip"] textconv = gzip -d -c [diff "pdf"] textconv = PWD/bin/pdftotext- [diff "sqlite"] textconv = PWD/bin/sqlite3dump [merge] tool = vimdiff [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 # vim: ft=gitconfig