When running an svn update, if --force was passed on the

command line to gclient, pass the flag to svn update and
svn co too.

This allows updates when we have dirty files left around.
For example, an update may remove a directory, but the
directory still has .vcproj or .mk files in it.  If we
try to re-add that directory, svn will error out.  If
we add --force, it'll happily allow the update.
Review URL: http://codereview.chromium.org/2560001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@48897 0039d316-1c4b-4281-b951-d872f2087c98
experimental/szager/collated-output
tony@chromium.org 16 years ago
parent c6d170e516
commit fb176482f3

@ -740,8 +740,7 @@ class SVNWrapper(SCMWrapper):
if not os.path.exists(checkout_path): if not os.path.exists(checkout_path):
# We need to checkout. # We need to checkout.
command = ['checkout', url, checkout_path] command = ['checkout', url, checkout_path]
if revision: command = self.AddAdditionalFlags(command, options, revision)
command.extend(['--revision', str(revision).strip()])
scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list) scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list)
return return
@ -798,8 +797,7 @@ class SVNWrapper(SCMWrapper):
gclient_utils.RemoveDirectory(checkout_path) gclient_utils.RemoveDirectory(checkout_path)
# We need to checkout. # We need to checkout.
command = ['checkout', url, checkout_path] command = ['checkout', url, checkout_path]
if revision: command = self.AddAdditionalFlags(command, options, revision)
command.extend(['--revision', str(revision).strip()])
scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list) scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list)
return return
@ -812,8 +810,7 @@ class SVNWrapper(SCMWrapper):
return return
command = ["update", checkout_path] command = ["update", checkout_path]
if revision: command = self.AddAdditionalFlags(command, options, revision)
command.extend(['--revision', str(revision).strip()])
scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list) scm.SVN.RunAndGetFileList(options, command, self._root_dir, file_list)
def updatesingle(self, options, args, file_list): def updatesingle(self, options, args, file_list):
@ -841,8 +838,7 @@ class SVNWrapper(SCMWrapper):
os.makedirs(checkout_path) os.makedirs(checkout_path)
command = ["export", os.path.join(self.url, filename), command = ["export", os.path.join(self.url, filename),
os.path.join(checkout_path, filename)] os.path.join(checkout_path, filename)]
if options.revision: command = self.AddAdditionalFlags(command, options, options.revision)
command.extend(['--revision', str(options.revision).strip()])
scm.SVN.Run(command, self._root_dir) scm.SVN.Run(command, self._root_dir)
def revert(self, options, args, file_list): def revert(self, options, args, file_list):
@ -927,3 +923,15 @@ class SVNWrapper(SCMWrapper):
def FullUrlForRelativeUrl(self, url): def FullUrlForRelativeUrl(self, url):
# Find the forth '/' and strip from there. A bit hackish. # Find the forth '/' and strip from there. A bit hackish.
return '/'.join(self.url.split('/')[:4]) + url return '/'.join(self.url.split('/')[:4]) + url
def AddAdditionalFlags(self, command, options, revision):
"""Add additional flags to command depending on what options are set.
command should be a list of strings that represents an svn command.
This method returns a new list to be used as a command."""
new_command = command[:]
if revision:
new_command.extend(['--revision', str(revision).strip()])
if options.force:
new_command.append('--force')
return new_command

@ -68,7 +68,7 @@ class SVNWrapperTestCase(BaseTestCase):
def testDir(self): def testDir(self):
members = [ members = [
'FullUrlForRelativeUrl', 'RunCommand', 'AddAdditionalFlags', 'FullUrlForRelativeUrl', 'RunCommand',
'cleanup', 'diff', 'export', 'pack', 'relpath', 'revert', 'cleanup', 'diff', 'export', 'pack', 'relpath', 'revert',
'revinfo', 'runhooks', 'scm_name', 'status', 'update', 'revinfo', 'runhooks', 'scm_name', 'status', 'update',
'updatesingle', 'url', 'updatesingle', 'url',
@ -266,6 +266,8 @@ class SVNWrapperTestCase(BaseTestCase):
additional_args = [] additional_args = []
if options.manually_grab_svn_rev: if options.manually_grab_svn_rev:
additional_args = ['--revision', str(file_info['Revision'])] additional_args = ['--revision', str(file_info['Revision'])]
if options.force:
additional_args.append('--force')
files_list = [] files_list = []
gclient_scm.scm.SVN.RunAndGetFileList( gclient_scm.scm.SVN.RunAndGetFileList(
options, options,

Loading…
Cancel
Save