| Index: gclient.py
|
| diff --git a/gclient.py b/gclient.py
|
| index 33f7911f0f3afa7688abc11adeebc95157bfcbb2..76de96f6ece8ecab6c3c385c789a48c12dd0a5ef 100755
|
| --- a/gclient.py
|
| +++ b/gclient.py
|
| @@ -313,6 +313,7 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
| # This is the scm used to checkout self.url. It may be used by dependencies
|
| # to get the datetime of the revision we checked out.
|
| self._used_scm = None
|
| + self._used_revision = None
|
| # The actual revision we ended up getting, or None if that information is
|
| # unavailable
|
| self._got_revision = None
|
| @@ -601,8 +602,7 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
| self.add_dependency(dep)
|
| self._mark_as_parsed(hooks)
|
|
|
| - def maybeGetParentRevision(
|
| - self, command, options, parsed_url, parent_name, revision_overrides):
|
| + def maybeGetParentRevision(self, command, options, parsed_url, parent):
|
| """Uses revision/timestamp of parent if no explicit revision was specified.
|
|
|
| If we are performing an update and --transitive is set, use
|
| @@ -615,7 +615,7 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
| if command == 'update' and options.transitive and not options.revision:
|
| _, revision = gclient_utils.SplitUrlRevision(parsed_url)
|
| if not revision:
|
| - options.revision = revision_overrides.get(parent_name)
|
| + options.revision = getattr(parent, '_used_revision', None)
|
| if (options.revision and
|
| not gclient_utils.IsDateRevision(options.revision)):
|
| assert self.parent and self.parent.used_scm
|
| @@ -636,7 +636,6 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
| if options.verbose:
|
| print('Using parent\'s revision date %s since we are in a '
|
| 'different repository.' % options.revision)
|
| - revision_overrides[self.name] = options.revision
|
|
|
| # Arguments number differs from overridden method
|
| # pylint: disable=W0221
|
| @@ -667,9 +666,10 @@ class Dependency(gclient_utils.WorkItem, DependencySettings):
|
| else:
|
| # Create a shallow copy to mutate revision.
|
| options = copy.copy(options)
|
| - options.revision = revision_overrides.get(self.name)
|
| + options.revision = revision_overrides.pop(self.name, None)
|
| self.maybeGetParentRevision(
|
| - command, options, parsed_url, self.parent.name, revision_overrides)
|
| + command, options, parsed_url, self.parent)
|
| + self._used_revision = options.revision
|
| self._used_scm = gclient_scm.CreateSCM(
|
| parsed_url, self.root.root_dir, self.name, self.outbuf,
|
| out_cb=work_queue.out_cb)
|
| @@ -1218,13 +1218,8 @@ want to set 'managed': False in .gclient.
|
| if not '@' in revision:
|
| # Support for --revision 123
|
| revision = '%s@%s' % (solutions_names[index], revision)
|
| - sol, rev = revision.split('@', 1)
|
| - if not sol in solutions_names:
|
| - #raise gclient_utils.Error('%s is not a valid solution.' % sol)
|
| - print >> sys.stderr, ('Please fix your script, having invalid '
|
| - '--revision flags will soon considered an error.')
|
| - else:
|
| - revision_overrides[sol] = rev
|
| + name, rev = revision.split('@', 1)
|
| + revision_overrides[name] = rev
|
| index += 1
|
| return revision_overrides
|
|
|
| @@ -1278,6 +1273,9 @@ want to set 'managed': False in .gclient.
|
| for s in self.dependencies:
|
| work_queue.enqueue(s)
|
| work_queue.flush(revision_overrides, command, args, options=self._options)
|
| + if revision_overrides:
|
| + print >> sys.stderr, ('Please fix your script, having invalid '
|
| + '--revision flags will soon considered an error.')
|
|
|
| # Once all the dependencies have been processed, it's now safe to run the
|
| # hooks.
|
|
|