X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=gitconfig.m4;h=159cbaacf36bb4a51e7f631221b730ded013e337;hb=5aefc04d52d746c8ba65bc9bb2fe1aba6ec8521f;hp=67d4213909808896a0f43891a6f7281fa6bdbb13;hpb=679839bd587c25c8f760c03042bdd5b76b5dbba9;p=config%2Fdotfiles.git diff --git a/gitconfig.m4 b/gitconfig.m4 index 67d4213..159cbaa 100644 --- a/gitconfig.m4 +++ b/gitconfig.m4 @@ -1,5 +1,20 @@ # 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) @@ -11,55 +26,118 @@ include(../lib.m4) [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 - # Can't use ~/ because of older git versions. - excludesfile = GITIGNORE # 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`. + singlekey = yes + [alias] - # Shortcuts for often used commands. - c = commit -v - ci = commit -v - d = diff --patience - di = diff --patience - dc = diff --patience --cached - s = status - st = status - l = log - ls = log --stat - lp = log -p --patience - glog = log --pretty=oneline --graph --all - a = add - ap = add -p - au = add -u - co = checkout - b = branch -av - br = branch -av - m = merge - me = merge - f = fetch - fe = fetch - t = tag - p = push - pu = push - ru = remote update - fs = fsck --strict --full - ss = stash save + ## Shortcuts for often used commands. + # + ## Local. + c = commit --verbose + ci = commit --verbose + d = diff PATIENCE + di = diff PATIENCE + dw = diff PATIENCE --color-words + dc = diff PATIENCE --cached + dcw = diff PATIENCE --cached --color-words + s = status + st = status + l = log + ls = log --stat + lp = log --patch PATIENCE + a = add + ap = add --patch + au = add --update + ## Branches. + co = checkout + b = branch -a -v + br = branch -a -v + m = merge + me = merge + mo = merge origin/master + ## Remote. + f = fetch + fe = fetch + t = tag + p = push + pu = 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 - sa = stash apply - sl = stash list - fp = format-patch + 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 = ! TIG | 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"] @@ -82,4 +160,9 @@ FI # replies to the first one. thread = shallow -# vim: ft=gitconfig +[receive] + # Automatically fsck objects when receiving them (respected by git + # receive-pack and git fetch (>= 1.7.8, for fetch)). + fsckobjects = true + +# vim: ft=gitconfig noet