| 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.
|
|
|