Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: host/willis

Issue 6824011: Make willis show relative paths. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/dev-util.git@master
Patch Set: Make willis show relative paths. Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Display active git branches and code changes in a ChromiumOS workspace.""" 6 """Display active git branches and code changes in a ChromiumOS workspace."""
7 7
8 import optparse 8 import optparse
9 import os 9 import os
10 import re 10 import re
11 import subprocess 11 import subprocess
12 12
(...skipping 24 matching lines...) Expand all
37 37
38 def ShowName(relative_name, color): 38 def ShowName(relative_name, color):
39 """Display the directory name.""" 39 """Display the directory name."""
40 40
41 if color: 41 if color:
42 print('\033[44m\033[37m%s\033[0m' % relative_name) 42 print('\033[44m\033[37m%s\033[0m' % relative_name)
43 else: 43 else:
44 print relative_name 44 print relative_name
45 45
46 46
47 def GetBranches(full_name, relative_name, color): 47 def GetBranches(full_name, color):
48 """Return a list of branch descriptions.""" 48 """Return a list of branch descriptions."""
49 49
50 command = ['git', 'branch', '-vv'] 50 command = ['git', 'branch', '-vv']
51 51
52 if color: 52 if color:
53 command.append('--color') 53 command.append('--color')
54 54
55 branches = RunCommand(full_name, command).splitlines() 55 branches = RunCommand(full_name, command).splitlines()
56 56
57 if re.search(r"\(no branch\)", branches[0]): 57 if re.search(r"\(no branch\)", branches[0]):
58 return [] 58 return []
59 59
60 return branches 60 return branches
61 61
62 def GetStatus(full_name, relative_name, color): 62 def GetStatus(full_name, color):
63 """Return a list of files that have modifications.""" 63 """Return a list of files that have modifications."""
64 64
65 command = ['git', 'status', '-s'] 65 command = ['git', 'status', '-s']
66 66
67 return RunCommand(full_name, command).splitlines() 67 return RunCommand(full_name, command).splitlines()
68 68
69 69
70 def GetHistory(full_name, relative_name, color, author, days): 70 def GetHistory(full_name, color, author, days):
71 """Return a list of oneline log messages. 71 """Return a list of oneline log messages.
72 72
73 The messages are for the author going back a specified number of days. 73 The messages are for the author going back a specified number of days.
74 """ 74 """
75 75
76 command = ['git', 'log', 76 command = ['git', 'log',
77 '--author=' + author, 77 '--author=' + author,
78 '--after=' + '-' + str(days) + 'days', 78 '--after=' + '-' + str(days) + 'days',
79 '--pretty=oneline', 79 '--pretty=oneline',
80 'm/master'] 80 'm/master']
81 81
82 return RunCommand(full_name, command).splitlines() 82 return RunCommand(full_name, command).splitlines()
83 83
84 84
85 def ShowDir(full_name, relative_name, color, logs, author, days): 85 def ShowDir(full_name, color, logs, author, days):
86 """Display active work in a single git repository.""" 86 """Display active work in a single git repository."""
87 87
88 branches = GetBranches(full_name, relative_name, color) 88 branches = GetBranches(full_name, color)
89 status = GetStatus(full_name, relative_name, color) 89 status = GetStatus(full_name, color)
90 90
91 if logs: 91 if logs:
92 history = GetHistory(full_name, relative_name, color, author, days) 92 history = GetHistory(full_name, color, author, days)
93 else: 93 else:
94 history = [] 94 history = []
95 95
96 if branches or status or history: 96 if branches or status or history:
97 ShowName(relative_name, color) 97 # We want to use the full path for testing, but we want to use the
98 # relative path for display.
99 ShowName(os.path.relpath(full_name), color)
98 100
99 if branches: print '\n'.join(branches) 101 if branches: print '\n'.join(branches)
100 if status: print '\n'.join(status) 102 if status: print '\n'.join(status)
101 if history: print '\n'.join(history) 103 if history: print '\n'.join(history)
102 104
103 if branches or status or history: 105 if branches or status or history:
104 print "" 106 print ""
105 107
106 108
107 def FindRoot(): 109 def FindRoot():
(...skipping 30 matching lines...) Expand all
138 options, arguments = parser.parse_args() 140 options, arguments = parser.parse_args()
139 141
140 if arguments: 142 if arguments:
141 parser.print_usage() 143 parser.print_usage()
142 return 1 144 return 1
143 145
144 color = os.isatty(1) 146 color = os.isatty(1)
145 root = FindRoot() 147 root = FindRoot()
146 repos = RunCommand(root, ['repo', 'forall', '-c', 'pwd']).splitlines() 148 repos = RunCommand(root, ['repo', 'forall', '-c', 'pwd']).splitlines()
147 149
148 # We want to use the full path for testing, but we want to use the relative 150 for full in repos:
149 # path for display. 151 ShowDir(full, color, options.logs, options.author, options.days)
150 reldirs = [re.sub('^' + re.escape(root) + '/', '', p) for p in repos]
151
152 for full, relative in zip(repos, reldirs):
153 ShowDir(full, relative, color, options.logs, options.author, options.days)
154 152
155 153
156 if __name__ == '__main__': 154 if __name__ == '__main__':
157 main() 155 main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698