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

Unified Diff: gclient_scm.py

Issue 1560029: Fix File() to work with SVN 1.4 by using svn export in place... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: '' Created 10 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | scm.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gclient_scm.py
===================================================================
--- gclient_scm.py (revision 44440)
+++ gclient_scm.py (working copy)
@@ -749,16 +749,31 @@
def updatesingle(self, options, args, file_list):
checkout_path = os.path.join(self._root_dir, self.relpath)
filename = args.pop()
- if not os.path.exists(checkout_path):
- # 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]
+ if scm.SVN.AssertVersion("1.5")[0]:
+ if not os.path.exists(os.path.join(checkout_path, '.svn')):
+ # 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, 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, command, checkout_path, file_list)
+ # After the initial checkout, we can use update as if it were any other
+ # dep.
+ self.update(options, args, file_list)
+ else:
+ # If the installed version of SVN doesn't support --depth, fallback to
+ # just exporting the file. This has the downside that revision
+ # information is not stored next to the file, so we will have to
+ # re-export the file every time we sync.
+ if not os.path.exists(checkout_path):
+ os.makedirs(checkout_path)
+ command = ["export", os.path.join(self.url, filename),
+ os.path.join(checkout_path, filename)]
+ if options.revision:
+ command.extend(['--revision', str(options.revision)])
scm.SVN.Run(command, self._root_dir)
- command = ["update", filename]
- scm.SVN.RunAndGetFileList(options, command, checkout_path, file_list)
- # After the initial checkout, we can use update as if it were any other
- # dep.
- self.update(options, args, file_list)
def revert(self, options, args, file_list):
"""Reverts local modifications. Subversion specific.
« no previous file with comments | « no previous file | scm.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698