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

Side by Side Diff: tools/svndiff.py

Issue 634313006: Use the function recently added to common in svndiff.py (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: roll DEPS + CHECKOUT_ROOT Created 6 years, 2 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
« no previous file with comments | « DEPS ('k') | 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/python 1 #!/usr/bin/python
2 ''' 2 '''
3 Copyright 2012 Google Inc. 3 Copyright 2012 Google Inc.
4 4
5 Use of this source code is governed by a BSD-style license that can be 5 Use of this source code is governed by a BSD-style license that can be
6 found in the LICENSE file. 6 found in the LICENSE file.
7 ''' 7 '''
8 8
9 ''' 9 '''
10 Generates a visual diff of all pending changes in the local SVN (or git!) 10 Generates a visual diff of all pending changes in the local SVN (or git!)
(...skipping 28 matching lines...) Expand all
39 # the 'tools' directory containing this script, which will be the case if 39 # the 'tools' directory containing this script, which will be the case if
40 # 'trunk' was checked out as a single unit. 40 # 'trunk' was checked out as a single unit.
41 GM_DIRECTORY = os.path.realpath( 41 GM_DIRECTORY = os.path.realpath(
42 os.path.join(os.path.dirname(os.path.dirname(__file__)), 'gm')) 42 os.path.join(os.path.dirname(os.path.dirname(__file__)), 'gm'))
43 if GM_DIRECTORY not in sys.path: 43 if GM_DIRECTORY not in sys.path:
44 sys.path.append(GM_DIRECTORY) 44 sys.path.append(GM_DIRECTORY)
45 import gm_json 45 import gm_json
46 import jsondiff 46 import jsondiff
47 import svn 47 import svn
48 48
49 CHECKOUT_ROOT = os.path.realpath(
50 os.path.join(os.path.dirname(__file__), os.pardir))
51 sys.path.append(CHECKOUT_ROOT)
52 from common.py.utils import git_utils
53
49 USAGE_STRING = 'Usage: %s [options]' 54 USAGE_STRING = 'Usage: %s [options]'
50 HELP_STRING = ''' 55 HELP_STRING = '''
51 56
52 Generates a visual diff of all pending changes in the local SVN/git checkout. 57 Generates a visual diff of all pending changes in the local SVN/git checkout.
53 58
54 This includes a list of all files that have been added, deleted, or modified 59 This includes a list of all files that have been added, deleted, or modified
55 (as far as SVN/git knows about). For any image modifications, pixel diffs will 60 (as far as SVN/git knows about). For any image modifications, pixel diffs will
56 be generated. 61 be generated.
57 62
58 ''' 63 '''
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 @param args a list of arguments 183 @param args a list of arguments
179 """ 184 """
180 proc = subprocess.Popen(args, 185 proc = subprocess.Popen(args,
181 stdout=subprocess.PIPE, 186 stdout=subprocess.PIPE,
182 stderr=subprocess.PIPE) 187 stderr=subprocess.PIPE)
183 (stdout, stderr) = proc.communicate() 188 (stdout, stderr) = proc.communicate()
184 if proc.returncode is not 0: 189 if proc.returncode is not 0:
185 raise Exception('command "%s" failed: %s' % (args, stderr)) 190 raise Exception('command "%s" failed: %s' % (args, stderr))
186 return stdout 191 return stdout
187 192
188 def _GitGetModifiedFiles():
189 """Returns a list of locally modified files within the current working dir.
190
191 TODO(epoger): Move this into a git utility package?
192 """
193 return _RunCommand(['git', 'ls-files', '-m']).splitlines()
194 193
195 def _GitExportBaseVersionOfFile(file_within_repo, dest_path): 194 def _GitExportBaseVersionOfFile(file_within_repo, dest_path):
196 """Retrieves a copy of the base version of a file within the repository. 195 """Retrieves a copy of the base version of a file within the repository.
197 196
198 @param file_within_repo path to the file within the repo whose base 197 @param file_within_repo path to the file within the repo whose base
199 version you wish to obtain 198 version you wish to obtain
200 @param dest_path destination to which to write the base content 199 @param dest_path destination to which to write the base content
201 200
202 TODO(epoger): Move this into a git utility package? 201 TODO(epoger): Move this into a git utility package?
203 """ 202 """
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 for dir in [modified_flattened_dir, original_flattened_dir, diff_dir] : 246 for dir in [modified_flattened_dir, original_flattened_dir, diff_dir] :
248 shutil.rmtree(dir, ignore_errors=True) 247 shutil.rmtree(dir, ignore_errors=True)
249 os.mkdir(dir) 248 os.mkdir(dir)
250 249
251 # Get a list of all locally modified (including added/deleted) files, 250 # Get a list of all locally modified (including added/deleted) files,
252 # descending subdirectories. 251 # descending subdirectories.
253 if using_svn: 252 if using_svn:
254 modified_file_paths = svn_repo.GetFilesWithStatus( 253 modified_file_paths = svn_repo.GetFilesWithStatus(
255 svn.STATUS_ADDED | svn.STATUS_DELETED | svn.STATUS_MODIFIED) 254 svn.STATUS_ADDED | svn.STATUS_DELETED | svn.STATUS_MODIFIED)
256 else: 255 else:
257 modified_file_paths = _GitGetModifiedFiles() 256 modified_file_paths = git_utils.GetModifiedFiles()
258 257
259 # For each modified file: 258 # For each modified file:
260 # 1. copy its current contents into modified_flattened_dir 259 # 1. copy its current contents into modified_flattened_dir
261 # 2. copy its original contents into original_flattened_dir 260 # 2. copy its original contents into original_flattened_dir
262 for modified_file_path in modified_file_paths: 261 for modified_file_path in modified_file_paths:
263 if modified_file_path.endswith('.json'): 262 if modified_file_path.endswith('.json'):
264 # Special handling for JSON files, in the hopes that they 263 # Special handling for JSON files, in the hopes that they
265 # contain GM result summaries. 264 # contain GM result summaries.
266 original_file = tempfile.NamedTemporaryFile(delete = False) 265 original_file = tempfile.NamedTemporaryFile(delete = False)
267 original_file.close() 266 original_file.close()
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 help='path to already-built skdiff tool; if not set, ' 326 help='path to already-built skdiff tool; if not set, '
328 'will search for it in typical directories near this ' 327 'will search for it in typical directories near this '
329 'script') 328 'script')
330 parser.add_option(OPTION_SOURCE_DIR, 329 parser.add_option(OPTION_SOURCE_DIR,
331 action='store', type='string', 330 action='store', type='string',
332 default=os.path.join('expectations', 'gm'), 331 default=os.path.join('expectations', 'gm'),
333 help='root directory within which to compare all ' + 332 help='root directory within which to compare all ' +
334 'files; defaults to "%default"') 333 'files; defaults to "%default"')
335 (options, args) = parser.parse_args() 334 (options, args) = parser.parse_args()
336 Main(options, args) 335 Main(options, args)
OLDNEW
« no previous file with comments | « DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698