Index: depot_tools/gclient.py |
=================================================================== |
--- depot_tools/gclient.py (revision 25991) |
+++ depot_tools/gclient.py (working copy) |
@@ -262,29 +262,28 @@ |
""", |
} |
-# parameterized by (solution_name, solution_url, safesync_url) |
-DEFAULT_CLIENT_FILE_TEXT = ( |
- """ |
-# An element of this array (a \"solution\") describes a repository directory |
+DEFAULT_CLIENT_FILE_TEXT = ("""\ |
+# An element of this array (a "solution") describes a repository directory |
# that will be checked out into your working copy. Each solution may |
# optionally define additional dependencies (via its DEPS file) to be |
# checked out alongside the solution's directory. A solution may also |
-# specify custom dependencies (via the \"custom_deps\" property) that |
+# specify custom dependencies (via the "custom_deps" property) that |
# override or augment the dependencies specified by the DEPS file. |
-# If a \"safesync_url\" is specified, it is assumed to reference the location of |
+# If a "safesync_url" is specified, it is assumed to reference the location of |
# a text file which contains nothing but the last known good SCM revision to |
# sync against. It is fetched if specified and used unless --head is passed |
+ |
solutions = [ |
- { \"name\" : \"%s\", |
- \"url\" : \"%s\", |
- \"custom_deps\" : { |
+ { "name" : "%(solution_name)s", |
+ "url" : "%(solution_url)s", |
+ "custom_deps" : { |
# To use the trunk of a component instead of what's in DEPS: |
- #\"component\": \"https://svnserver/component/trunk/\", |
+ #"component": "https://svnserver/component/trunk/", |
# To exclude a component from your working copy: |
- #\"data/really_large_component\": None, |
+ #"data/really_large_component": None, |
}, |
- \"safesync_url\": \"%s\" |
- } |
+ "safesync_url": "%(safesync_url)s" |
+ }, |
] |
""") |
@@ -1131,9 +1130,11 @@ |
return client |
def SetDefaultConfig(self, solution_name, solution_url, safesync_url): |
- self.SetConfig(DEFAULT_CLIENT_FILE_TEXT % ( |
- solution_name, solution_url, safesync_url |
- )) |
+ self.SetConfig(DEFAULT_CLIENT_FILE_TEXT % { |
+ 'solution_name': solution_name, |
+ 'solution_url': solution_url, |
+ 'safesync_url' : safesync_url, |
+ }) |
def _SaveEntries(self, entries): |
"""Creates a .gclient_entries file to record the list of unique checkouts. |
@@ -1431,6 +1432,9 @@ |
# Run on the base solutions first. |
for solution in solutions: |
name = solution["name"] |
+ deps_file = solution.get("deps_file", self._options.deps_file) |
+ if '/' in deps_file or '\\' in deps_file: |
+ raise Error("deps_file name must not be a path, just a filename.") |
if name in entries: |
raise Error("solution %s specified more than once" % name) |
url = solution["url"] |
@@ -1443,7 +1447,7 @@ |
self._options.revision = None |
try: |
deps_content = FileRead(os.path.join(self._root_dir, name, |
- self._options.deps_file)) |
+ deps_file)) |
except IOError, e: |
if e.errno != errno.ENOENT: |
raise |
@@ -1483,7 +1487,7 @@ |
scm = SCMWrapper(url, self._root_dir, d) |
scm.RunCommand(command, self._options, args, file_list) |
self._options.revision = None |
- |
+ |
# Convert all absolute paths to relative. |
for i in range(len(file_list)): |
# TODO(phajdan.jr): We should know exactly when the paths are absolute. |