| Index: gclient_scm.py
|
| diff --git a/gclient_scm.py b/gclient_scm.py
|
| index 4f2efc45aaa36238709ff869cc4f6f919fdeb69d..12f1e1d5d50e69ec870155dbeb0bfb33715d2adb 100644
|
| --- a/gclient_scm.py
|
| +++ b/gclient_scm.py
|
| @@ -670,15 +670,14 @@ class SVNWrapper(SCMWrapper):
|
|
|
| def cleanup(self, options, args, file_list):
|
| """Cleanup working copy."""
|
| - scm.SVN.Run(['cleanup'] + args,
|
| - cwd=os.path.join(self._root_dir, self.relpath))
|
| + self._Run(['cleanup'] + args, options)
|
|
|
| def diff(self, options, args, file_list):
|
| # NOTE: This function does not currently modify file_list.
|
| path = os.path.join(self._root_dir, self.relpath)
|
| if not os.path.isdir(path):
|
| raise gclient_utils.Error('Directory %s is not present.' % path)
|
| - scm.SVN.Run(['diff'] + args, cwd=path)
|
| + self._Run(['diff'] + args, options)
|
|
|
| def export(self, options, args, file_list):
|
| """Export a clean directory tree into the given path."""
|
| @@ -689,8 +688,7 @@ class SVNWrapper(SCMWrapper):
|
| except OSError:
|
| pass
|
| assert os.path.exists(export_path)
|
| - scm.SVN.Run(['export', '--force', '.', export_path],
|
| - cwd=os.path.join(self._root_dir, self.relpath))
|
| + self._Run(['export', '--force', '.', export_path], options)
|
|
|
| def pack(self, options, args, file_list):
|
| """Generates a patch file which can be applied to the root of the
|
| @@ -745,8 +743,7 @@ class SVNWrapper(SCMWrapper):
|
| # We need to checkout.
|
| command = ['checkout', url, checkout_path]
|
| command = self._AddAdditionalUpdateFlags(command, options, revision)
|
| - scm.SVN.RunAndGetFileList(options.verbose, command, self._root_dir,
|
| - file_list)
|
| + self._RunAndGetFileList(command, options, file_list, self._root_dir)
|
| return
|
|
|
| # Get the existing scm url and the revision number of the current checkout.
|
| @@ -761,7 +758,7 @@ class SVNWrapper(SCMWrapper):
|
| dir_info = scm.SVN.CaptureStatus(os.path.join(checkout_path, '.'))
|
| if [True for d in dir_info if d[0][2] == 'L' and d[1] == checkout_path]:
|
| # The current directory is locked, clean it up.
|
| - scm.SVN.Run(['cleanup'], cwd=checkout_path)
|
| + self._Run(['cleanup'], options)
|
|
|
| # Retrieve the current HEAD version because svn is slow at null updates.
|
| if options.manually_grab_svn_rev and not revision:
|
| @@ -793,7 +790,7 @@ class SVNWrapper(SCMWrapper):
|
| from_info['Repository Root'],
|
| to_info['Repository Root'],
|
| self.relpath]
|
| - scm.SVN.Run(command, cwd=self._root_dir)
|
| + self._Run(command, options, cwd=self._root_dir)
|
| from_info['URL'] = from_info['URL'].replace(
|
| from_info['Repository Root'],
|
| to_info['Repository Root'])
|
| @@ -812,8 +809,7 @@ class SVNWrapper(SCMWrapper):
|
| # We need to checkout.
|
| command = ['checkout', url, checkout_path]
|
| command = self._AddAdditionalUpdateFlags(command, options, revision)
|
| - scm.SVN.RunAndGetFileList(options.verbose, command, self._root_dir,
|
| - file_list)
|
| + self._RunAndGetFileList(command, options, file_list, self._root_dir)
|
| return
|
|
|
| # If the provided url has a revision number that matches the revision
|
| @@ -825,8 +821,7 @@ class SVNWrapper(SCMWrapper):
|
|
|
| command = ['update', checkout_path]
|
| command = self._AddAdditionalUpdateFlags(command, options, revision)
|
| - scm.SVN.RunAndGetFileList(options.verbose, command, self._root_dir,
|
| - file_list)
|
| + self._RunAndGetFileList(command, options, file_list, self._root_dir)
|
|
|
| def updatesingle(self, options, args, file_list):
|
| checkout_path = os.path.join(self._root_dir, self.relpath)
|
| @@ -836,12 +831,11 @@ class SVNWrapper(SCMWrapper):
|
| # Create an empty checkout and then update the one file we want. Future
|
| # operations will only apply to the one file we checked out.
|
| command = ["checkout", "--depth", "empty", self.url, checkout_path]
|
| - scm.SVN.Run(command, cwd=self._root_dir)
|
| + self._Run(command, options, cwd=self._root_dir)
|
| if os.path.exists(os.path.join(checkout_path, filename)):
|
| os.remove(os.path.join(checkout_path, filename))
|
| command = ["update", filename]
|
| - scm.SVN.RunAndGetFileList(options.verbose, command, checkout_path,
|
| - file_list)
|
| + self._RunAndGetFileList(command, options, file_list)
|
| # After the initial checkout, we can use update as if it were any other
|
| # dep.
|
| self.update(options, args, file_list)
|
| @@ -856,7 +850,7 @@ class SVNWrapper(SCMWrapper):
|
| os.path.join(checkout_path, filename)]
|
| command = self._AddAdditionalUpdateFlags(command, options,
|
| options.revision)
|
| - scm.SVN.Run(command, cwd=self._root_dir)
|
| + self._Run(command, options, cwd=self._root_dir)
|
|
|
| def revert(self, options, args, file_list):
|
| """Reverts local modifications. Subversion specific.
|
| @@ -919,9 +913,8 @@ class SVNWrapper(SCMWrapper):
|
| try:
|
| # svn revert is so broken we don't even use it. Using
|
| # "svn up --revision BASE" achieve the same effect.
|
| - scm.SVN.RunAndGetFileList(options.verbose,
|
| - ['update', '--revision', 'BASE'], path,
|
| - file_list)
|
| + self._RunAndGetFileList(['update', '--revision', 'BASE'], options,
|
| + file_list)
|
| except OSError, e:
|
| # Maybe the directory disapeared meanwhile. We don't want it to throw an
|
| # exception.
|
| @@ -937,8 +930,7 @@ class SVNWrapper(SCMWrapper):
|
| def status(self, options, args, file_list):
|
| """Display status information."""
|
| path = os.path.join(self._root_dir, self.relpath)
|
| - command = ['status']
|
| - command.extend(args)
|
| + command = ['status'] + args
|
| if not os.path.isdir(path):
|
| # svn status won't work if the directory doesn't exist.
|
| print("\n________ couldn't run \'%s\' in \'%s\':\nThe directory "
|
| @@ -946,12 +938,24 @@ class SVNWrapper(SCMWrapper):
|
| % (' '.join(command), path))
|
| # There's no file list to retrieve.
|
| else:
|
| - scm.SVN.RunAndGetFileList(options.verbose, command, path, file_list)
|
| + self._RunAndGetFileList(command, options, file_list)
|
|
|
| def FullUrlForRelativeUrl(self, url):
|
| # Find the forth '/' and strip from there. A bit hackish.
|
| return '/'.join(self.url.split('/')[:4]) + url
|
|
|
| + def _Run(self, args, options, **kwargs):
|
| + """Runs a commands that goes to stdout."""
|
| + kwargs.setdefault('cwd', os.path.join(self._root_dir, self.relpath))
|
| + gclient_utils.CheckCallAndFilterAndHeader(['svn'] + args,
|
| + always=options.verbose, stdout=options.stdout, **kwargs)
|
| +
|
| + def _RunAndGetFileList(self, args, options, file_list, cwd=None):
|
| + """Runs a commands that goes to stdout and grabs the file listed."""
|
| + cwd = cwd or os.path.join(self._root_dir, self.relpath)
|
| + scm.SVN.RunAndGetFileList(options.verbose, args, cwd=cwd,
|
| + file_list=file_list, stdout=options.stdout)
|
| +
|
| @staticmethod
|
| def _AddAdditionalUpdateFlags(command, options, revision):
|
| """Add additional flags to command depending on what options are set.
|
|
|