|
@@ -52,9 +52,9 @@ COLORS = {
|
52
|
52
|
|
53
|
53
|
# Keys for checking and values for diffing.
|
54
|
54
|
REVISION_CONTROL = (
|
55
|
|
- (['git', 'rev-parse'], ['git', 'diff']),
|
56
|
|
- (['svn', 'info'], ['svn', 'diff']),
|
57
|
|
- (['hg', 'summary'], ['hg', 'diff'])
|
|
55
|
+ (['git', 'rev-parse'], ['git', 'diff'], ['git', 'log', '--patch']),
|
|
56
|
+ (['svn', 'info'], ['svn', 'diff'], ['svn', 'log', '--diff']),
|
|
57
|
+ (['hg', 'summary'], ['hg', 'diff'], ['hg', 'log', '--patch'])
|
58
|
58
|
)
|
59
|
59
|
|
60
|
60
|
|
|
@@ -516,11 +516,18 @@ def check_command_status(arguments):
|
516
|
516
|
|
517
|
517
|
def revision_control_diff():
|
518
|
518
|
"""Return diff from revision control system."""
|
519
|
|
- for check, diff in REVISION_CONTROL:
|
|
519
|
+ for check, diff, _ in REVISION_CONTROL:
|
520
|
520
|
if check_command_status(check):
|
521
|
521
|
return subprocess.Popen(diff, stdout=subprocess.PIPE).stdout
|
522
|
522
|
|
523
|
523
|
|
|
524
|
+def revision_control_log():
|
|
525
|
+ """Return log from revision control system."""
|
|
526
|
+ for check, _, log in REVISION_CONTROL:
|
|
527
|
+ if check_command_status(check):
|
|
528
|
+ return subprocess.Popen(log, stdout=subprocess.PIPE).stdout
|
|
529
|
+
|
|
530
|
+
|
524
|
531
|
def decode(line):
|
525
|
532
|
"""Decode UTF-8 if necessary."""
|
526
|
533
|
try:
|
|
@@ -532,7 +539,7 @@ def decode(line):
|
532
|
539
|
def main():
|
533
|
540
|
import optparse
|
534
|
541
|
|
535
|
|
- supported_vcs = [check[0] for check, _ in REVISION_CONTROL]
|
|
542
|
+ supported_vcs = [check[0][0] for check in REVISION_CONTROL]
|
536
|
543
|
|
537
|
544
|
usage = """
|
538
|
545
|
%prog [options]
|
|
@@ -547,9 +554,18 @@ def main():
|
547
|
554
|
help='show in side-by-side mode')
|
548
|
555
|
parser.add_option('-w', '--width', type='int', default=80, metavar='N',
|
549
|
556
|
help='set text width (side-by-side mode only), default is 80')
|
|
557
|
+ parser.add_option('-l', '--log', action='store_true',
|
|
558
|
+ help='show log from revision control (git, svn, hg)')
|
550
|
559
|
opts, args = parser.parse_args()
|
551
|
560
|
|
552
|
|
- if len(args) > 2:
|
|
561
|
+ if opts.log:
|
|
562
|
+ diff_hdl = revision_control_log()
|
|
563
|
+ if not diff_hdl:
|
|
564
|
+ sys.stderr.write(('*** Not in a supported workspace, supported '
|
|
565
|
+ 'are: %s\n\n') % ', '.join(supported_vcs))
|
|
566
|
+ parser.print_help()
|
|
567
|
+ return 1
|
|
568
|
+ elif len(args) > 2:
|
553
|
569
|
parser.print_help()
|
554
|
570
|
return 1
|
555
|
571
|
elif len(args) == 2:
|