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

Side by Side Diff: scm.py

Issue 507070: Add gclient_scm.GitWrapper.pack() (Closed)
Patch Set: Cleaner path join Created 10 years, 12 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 | « gclient_scm.py ('k') | tests/gclient_scm_test.py » ('j') | no next file with comments »
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 os 7 import os
8 import re 8 import re
9 import shutil 9 import shutil
10 import subprocess 10 import subprocess
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 results = [] 61 results = []
62 if status: 62 if status:
63 for statusline in status.split('\n'): 63 for statusline in status.split('\n'):
64 m = re.match('^(\w)\t(.+)$', statusline) 64 m = re.match('^(\w)\t(.+)$', statusline)
65 if not m: 65 if not m:
66 raise Exception("status currently unsupported: %s" % statusline) 66 raise Exception("status currently unsupported: %s" % statusline)
67 results.append(('%s ' % m.group(1), m.group(2))) 67 results.append(('%s ' % m.group(1), m.group(2)))
68 return results 68 return results
69 69
70 @staticmethod 70 @staticmethod
71 def RunAndFilterOutput(args,
72 in_directory,
73 print_messages,
74 print_stdout,
75 filter):
76 """Runs a command, optionally outputting to stdout.
77
78 stdout is passed line-by-line to the given filter function. If
79 print_stdout is true, it is also printed to sys.stdout as in Run.
80
81 Args:
82 args: A sequence of command line parameters to be passed.
83 in_directory: The directory where svn is to be run.
84 print_messages: Whether to print status messages to stdout about
85 which commands are being run.
86 print_stdout: Whether to forward program's output to stdout.
87 filter: A function taking one argument (a string) which will be
88 passed each line (with the ending newline character removed) of
89 program's output for filtering.
90
91 Raises:
92 gclient_utils.Error: An error occurred while running the command.
93 """
94 command = [GIT.COMMAND]
95 command.extend(args)
96 gclient_utils.SubprocessCallAndFilter(command,
97 in_directory,
98 print_messages,
99 print_stdout,
100 filter=filter)
101
102 @staticmethod
71 def GetEmail(repo_root): 103 def GetEmail(repo_root):
72 """Retrieves the user email address if known.""" 104 """Retrieves the user email address if known."""
73 # We could want to look at the svn cred when it has a svn remote but it 105 # We could want to look at the svn cred when it has a svn remote but it
74 # should be fine for now, users should simply configure their git settings. 106 # should be fine for now, users should simply configure their git settings.
75 return GIT.Capture(['config', 'user.email'], 107 return GIT.Capture(['config', 'user.email'],
76 repo_root, error_ok=True).strip() 108 repo_root, error_ok=True).strip()
77 109
78 @staticmethod 110 @staticmethod
79 def ShortBranchName(branch): 111 def ShortBranchName(branch):
80 """Converts a name like 'refs/heads/foo' to just 'foo'.""" 112 """Converts a name like 'refs/heads/foo' to just 'foo'."""
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 args[0] = 'update' 358 args[0] = 'update'
327 continue 359 continue
328 break 360 break
329 361
330 @staticmethod 362 @staticmethod
331 def RunAndFilterOutput(args, 363 def RunAndFilterOutput(args,
332 in_directory, 364 in_directory,
333 print_messages, 365 print_messages,
334 print_stdout, 366 print_stdout,
335 filter): 367 filter):
336 """Runs svn checkout, update, status, or diff, optionally outputting 368 """Runs a command, optionally outputting to stdout.
337 to stdout.
338 369
339 The first item in args must be either "checkout", "update", 370 stdout is passed line-by-line to the given filter function. If
340 "status", or "diff".
341
342 svn's stdout is passed line-by-line to the given filter function. If
343 print_stdout is true, it is also printed to sys.stdout as in Run. 371 print_stdout is true, it is also printed to sys.stdout as in Run.
344 372
345 Args: 373 Args:
346 args: A sequence of command line parameters to be passed to svn. 374 args: A sequence of command line parameters to be passed.
347 in_directory: The directory where svn is to be run. 375 in_directory: The directory where svn is to be run.
348 print_messages: Whether to print status messages to stdout about 376 print_messages: Whether to print status messages to stdout about
349 which Subversion commands are being run. 377 which commands are being run.
350 print_stdout: Whether to forward Subversion's output to stdout. 378 print_stdout: Whether to forward program's output to stdout.
351 filter: A function taking one argument (a string) which will be 379 filter: A function taking one argument (a string) which will be
352 passed each line (with the ending newline character removed) of 380 passed each line (with the ending newline character removed) of
353 Subversion's output for filtering. 381 program's output for filtering.
354 382
355 Raises: 383 Raises:
356 Error: An error occurred while running the svn command. 384 gclient_utils.Error: An error occurred while running the command.
357 """ 385 """
358 command = [SVN.COMMAND] 386 command = [SVN.COMMAND]
359 command.extend(args) 387 command.extend(args)
360
361 gclient_utils.SubprocessCallAndFilter(command, 388 gclient_utils.SubprocessCallAndFilter(command,
362 in_directory, 389 in_directory,
363 print_messages, 390 print_messages,
364 print_stdout, 391 print_stdout,
365 filter=filter) 392 filter=filter)
366 393
367 @staticmethod 394 @staticmethod
368 def CaptureInfo(relpath, in_directory=None, print_error=True): 395 def CaptureInfo(relpath, in_directory=None, print_error=True):
369 """Returns a dictionary from the svn info output for the given file. 396 """Returns a dictionary from the svn info output for the given file.
370 397
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 if not cur_dir_repo_root: 695 if not cur_dir_repo_root:
669 return None 696 return None
670 697
671 while True: 698 while True:
672 parent = os.path.dirname(directory) 699 parent = os.path.dirname(directory)
673 if (SVN.CaptureInfo(parent, print_error=False).get( 700 if (SVN.CaptureInfo(parent, print_error=False).get(
674 "Repository Root") != cur_dir_repo_root): 701 "Repository Root") != cur_dir_repo_root):
675 break 702 break
676 directory = parent 703 directory = parent
677 return directory 704 return directory
OLDNEW
« no previous file with comments | « gclient_scm.py ('k') | tests/gclient_scm_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698