| Index: gclient.py
 | 
| diff --git a/gclient.py b/gclient.py
 | 
| index 9a678220f117760ad2c9c5c4cdefa21705a35839..28f590d905e17e23ecf342ba3dc10fb82d05c249 100644
 | 
| --- a/gclient.py
 | 
| +++ b/gclient.py
 | 
| @@ -339,6 +339,40 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
 | 
|    def run(self, revision_overrides, command, args, work_queue, options):
 | 
|      """Runs 'command' before parsing the DEPS in case it's a initial checkout
 | 
|      or a revert."""
 | 
| +
 | 
| +    def maybeGetParentRevision(options):
 | 
| +      """If we are performing an update and --transitive is set, set the
 | 
| +      revision to the parent's revision. If we have an explicit revision
 | 
| +      do nothing."""
 | 
| +      if command == 'update' and options.transitive and not options.revision:
 | 
| +        _, revision = gclient_utils.SplitUrlRevision(self.parsed_url)
 | 
| +        if not revision:
 | 
| +          options.revision = revision_overrides.get(self.parent.name)
 | 
| +          if options.verbose and options.revision:
 | 
| +            print("Using parent's revision date: %s" % options.revision)
 | 
| +          # If the parent has a revision override, then it must have been
 | 
| +          # converted to date format.
 | 
| +          assert (not options.revision or
 | 
| +                  gclient_utils.IsDateRevision(options.revision))
 | 
| +
 | 
| +    def maybeConvertToDateRevision(options):
 | 
| +      """If we are performing an update and --transitive is set, convert the
 | 
| +      revision to a date-revision (if necessary). Instead of having
 | 
| +      -r 101 replace the revision with the time stamp of 101 (e.g.
 | 
| +      "{2011-18-04}").
 | 
| +      This way dependencies are upgraded to the revision they had at the
 | 
| +      check-in of revision 101."""
 | 
| +      if (command == 'update' and
 | 
| +          options.transitive and
 | 
| +          options.revision and
 | 
| +          not gclient_utils.IsDateRevision(options.revision)):
 | 
| +        revision_date = scm.GetRevisionDate(options.revision)
 | 
| +        revision = gclient_utils.MakeDateRevision(revision_date)
 | 
| +        if options.verbose:
 | 
| +          print("Updating revision override from %s to %s." %
 | 
| +                (options.revision, revision))
 | 
| +        revision_overrides[self.name] = revision
 | 
| +
 | 
|      assert self._file_list == []
 | 
|      if not self.should_process:
 | 
|        return
 | 
| @@ -362,8 +396,10 @@ class Dependency(GClientKeywords, gclient_utils.WorkItem):
 | 
|          # Create a shallow copy to mutate revision.
 | 
|          options = copy.copy(options)
 | 
|          options.revision = revision_overrides.get(self.name)
 | 
| +        maybeGetParentRevision(options)
 | 
|          scm = gclient_scm.CreateSCM(self.parsed_url, self.root_dir(), self.name)
 | 
|          scm.RunCommand(command, options, args, self._file_list)
 | 
| +        maybeConvertToDateRevision(options)
 | 
|          self._file_list = [os.path.join(self.name, f.strip())
 | 
|                             for f in self._file_list]
 | 
|      self.processed = True
 | 
| @@ -1043,6 +1079,11 @@ def CMDsync(parser, args):
 | 
|                           'has multiple solutions configured and will work even '
 | 
|                           'if the src@ part is skipped. Note that specifying '
 | 
|                           '--revision means your safesync_url gets ignored.')
 | 
| +  parser.add_option('-t', '--transitive', action='store_true',
 | 
| +                    help='When a revision is specified (in the DEPS file or '
 | 
| +                          'with the command-line flag), transitively update '
 | 
| +                          'the dependencies to the date of the given revision. '
 | 
| +                          'Only supported for SVN repositories.')
 | 
|    parser.add_option('-H', '--head', action='store_true',
 | 
|                      help='skips any safesync_urls specified in '
 | 
|                           'configured solutions and sync to head instead')
 | 
| 
 |