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

Side by Side Diff: scm.py

Issue 543012: Add the capability to filter out files on try job with regexp. (Closed)
Patch Set: Created 10 years, 11 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 | « no previous file | tests/gclient_scm_test.py » ('j') | trychange.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """SCM-specific utility classes.""" 5 """SCM-specific utility classes."""
6 6
7 import glob 7 import glob
8 import os 8 import os
9 import re 9 import re
10 import shutil 10 import shutil
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 223
224 @staticmethod 224 @staticmethod
225 def GetUpstream(cwd): 225 def GetUpstream(cwd):
226 """Gets the current branch's upstream branch.""" 226 """Gets the current branch's upstream branch."""
227 remote, upstream_branch = GIT.FetchUpstreamTuple(cwd) 227 remote, upstream_branch = GIT.FetchUpstreamTuple(cwd)
228 if remote is not '.': 228 if remote is not '.':
229 upstream_branch = upstream_branch.replace('heads', 'remotes/' + remote) 229 upstream_branch = upstream_branch.replace('heads', 'remotes/' + remote)
230 return upstream_branch 230 return upstream_branch
231 231
232 @staticmethod 232 @staticmethod
233 def GenerateDiff(cwd, branch=None, full_move=False): 233 def GenerateDiff(cwd, branch=None, branch_head='HEAD', full_move=False,
234 files=None):
234 """Diffs against the upstream branch or optionally another branch. 235 """Diffs against the upstream branch or optionally another branch.
235 236
236 full_move means that move or copy operations should completely recreate the 237 full_move means that move or copy operations should completely recreate the
237 files, usually in the prospect to apply the patch for a try job.""" 238 files, usually in the prospect to apply the patch for a try job."""
238 if not branch: 239 if not branch:
239 branch = GIT.GetUpstream(cwd) 240 branch = GIT.GetUpstream(cwd)
240 command = ['diff-tree', '-p', '--no-prefix', branch, 'HEAD'] 241 command = ['diff-tree', '-p', '--no-prefix', branch, branch_head]
241 if not full_move: 242 if not full_move:
242 command.append('-C') 243 command.append('-C')
244 # TODO(maruel): --binary support.
245 if files:
246 command.append('--')
247 command.extend(files)
243 diff = GIT.Capture(command, cwd).splitlines(True) 248 diff = GIT.Capture(command, cwd).splitlines(True)
244 for i in range(len(diff)): 249 for i in range(len(diff)):
245 # In the case of added files, replace /dev/null with the path to the 250 # In the case of added files, replace /dev/null with the path to the
246 # file being added. 251 # file being added.
247 if diff[i].startswith('--- /dev/null'): 252 if diff[i].startswith('--- /dev/null'):
248 diff[i] = '--- %s' % diff[i+1][4:] 253 diff[i] = '--- %s' % diff[i+1][4:]
249 return ''.join(diff) 254 return ''.join(diff)
250 255
251 @staticmethod 256 @staticmethod
257 def GetDifferentFiles(cwd, branch=None, branch_head='HEAD'):
258 """Returns the list of modified files between two branches."""
259 if not branch:
260 branch = GIT.GetUpstream(cwd)
261 command = ['diff', '--name-only', branch, branch_head]
262 return GIT.Capture(command, cwd).splitlines(False)
263
264 @staticmethod
252 def GetPatchName(cwd): 265 def GetPatchName(cwd):
253 """Constructs a name for this patch.""" 266 """Constructs a name for this patch."""
254 short_sha = GIT.Capture(['rev-parse', '--short=4', 'HEAD'], cwd).strip() 267 short_sha = GIT.Capture(['rev-parse', '--short=4', 'HEAD'], cwd).strip()
255 return "%s-%s" % (GIT.GetBranch(cwd), short_sha) 268 return "%s-%s" % (GIT.GetBranch(cwd), short_sha)
256 269
257 @staticmethod 270 @staticmethod
258 def GetCheckoutRoot(path): 271 def GetCheckoutRoot(path):
259 """Returns the top level directory of a git checkout as an absolute path. 272 """Returns the top level directory of a git checkout as an absolute path.
260 """ 273 """
261 root = GIT.Capture(['rev-parse', '--show-cdup'], path).strip() 274 root = GIT.Capture(['rev-parse', '--show-cdup'], path).strip()
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 if not cur_dir_repo_root: 735 if not cur_dir_repo_root:
723 return None 736 return None
724 737
725 while True: 738 while True:
726 parent = os.path.dirname(directory) 739 parent = os.path.dirname(directory)
727 if (SVN.CaptureInfo(parent, print_error=False).get( 740 if (SVN.CaptureInfo(parent, print_error=False).get(
728 "Repository Root") != cur_dir_repo_root): 741 "Repository Root") != cur_dir_repo_root):
729 break 742 break
730 directory = parent 743 directory = parent
731 return GetCasedPath(directory) 744 return GetCasedPath(directory)
OLDNEW
« no previous file with comments | « no previous file | tests/gclient_scm_test.py » ('j') | trychange.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698