+++ /dev/null
-#!/bin/bash
-
-# Code copied from Quilt (http://savannah.nongnu.org/projects/quilt)
-#
-# Copyright 2006 - the Quilt authors
-#
-# This script is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-
-setup_colors()
-{
- local C="diffhdr=1;36:diffhdradd=1;32:diffadd=32:diffhdrmod=1;35:diffmod=35:diffhdrrem=1;31:diffrem=31:diffhunk=36:diffctx=34:diffcctx=33:default=0"
- [ -n "$DIFF_COLORS" ] && C="$C:$DIFF_COLORS"
-
- C=${C//=/=\'$'\e'[}
- C=col${C//:/m\'; col}m\'
- #coldefault=$(tput op)
- eval $C
-}
-
-setup_colors
-
-gawk '{
- if (/^(Index:|diff --git) /)
- print "'$coldiffhdr'" $0 "'$coldefault'"
- else if (/^======*$/)
- print "'$coldiffhdr'" $0 "'$coldefault'"
- else if (/^\+\+\+/)
- print "'$coldiffhdradd'" $0 "'$coldefault'"
- else if (/^\*\*\*/)
- print "'$coldiffhdrmod'" $0 "'$coldefault'"
- else if (/^---/)
- print "'$coldiffhdrrem'" $0 "'$coldefault'"
- else if (/^(\+|new( file)? mode )/)
- print "'$coldiffadd'" $0 "'$coldefault'"
- else if (/^(-|(deleted file|old) mode )/)
- print "'$coldiffrem'" $0 "'$coldefault'"
- else if (/^!/)
- print "'$coldiffmod'" $0 "'$coldefault'"
- else if (/^@@ \-[0-9]+(,[0-9]+)? \+[0-9]+(,[0-9]+)? @@/)
- print gensub(/^(@@[^@]*@@)([ \t]*)(.*)/,
- "'$coldiffhunk'" "\\1" "'$coldefault'" \
- "\\2" \
- "'$coldiffctx'" "\\3" "'$coldefault'", "")
- else if (/^\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/)
- print "'$coldiffcctx'" $0 "'$coldefault'"
- else {
- print
- }
-}' $1 | less -R -S
#editor = /usr/bin/vi
# this value overrides the default PAGER environment variable
- #pager = ~/share/stgit/contrib/diffcol.sh
- #pager = filterdiff --annotate | colordiff | less -FRX
+ #pager = less -FRSX
+ #pager = filterdiff --annotate | colordiff | less -FRSX
# GIT pull and fetch commands (should take the same arguments as
# git fetch or git pull). By default:
('share/stgit/templates', glob.glob('templates/*.tmpl')),
('share/stgit/examples', glob.glob('examples/*.tmpl')),
('share/stgit/examples', ['examples/gitconfig']),
- ('share/stgit/contrib', ['contrib/diffcol.sh',
- 'contrib/stgbashprompt.sh']),
+ ('share/stgit/contrib', ['contrib/stgbashprompt.sh']),
('share/stgit/completion', ['stgit-completion.bash'])
])
except libgit.RepositoryException:
raise CmdException('%s: Unknown patch or revision name' % name)
+def color_diff_flags():
+ """Return the git flags for coloured diff output if the configuration and
+ stdout allows."""
+ stdout_is_tty = (sys.stdout.isatty() and 'true') or 'false'
+ if config.get_colorbool('color.diff', stdout_is_tty) == 'true':
+ return ['--color']
+ else:
+ return []
+
def check_local_changes():
if git.local_changes():
raise CmdException('local changes in the tree. Use "refresh" or'
rev1 = 'HEAD'
rev2 = None
+ if not options.stat:
+ options.diff_flags.extend(color_diff_flags())
diff_str = git.diff(args, git_id(crt_series, rev1),
rev2 and git_id(crt_series, rev2),
diff_flags = options.diff_flags)
# individual patches or commit ids
patches = args
+ options.diff_flags.extend(color_diff_flags())
commit_ids = [git_id(crt_series, patch) for patch in patches]
commit_str = '\n'.join([git.pretty_commit(commit_id,
flags = options.diff_flags)
'stgit.autoimerge': 'no',
'stgit.keepoptimized': 'no',
'stgit.extensions': '.ancestor .current .patched',
- 'stgit.shortnr': '5'
+ 'stgit.shortnr': '5',
+ 'stgit.pager': 'less -FRSX'
}
__cache = None
if m:
result.append(m.group(1))
return result
+
+ def get_colorbool(self, name, stdout_is_tty):
+ """Invoke 'git config --get-colorbool' and return the result."""
+ return Run('git', 'config', '--get-colorbool', name,
+ stdout_is_tty).output_one_line()
config=GitConfig()
def config_setup():
global config
- # Set the PAGER environment to the config value (if any)
- pager = config.get('stgit.pager')
- if pager:
- os.environ['PAGER'] = pager
+ os.environ.setdefault('PAGER', config.get('stgit.pager'))
# FIXME: handle EDITOR the same way ?
class ConfigOption: