Index: gclient_scm.py |
diff --git a/gclient_scm.py b/gclient_scm.py |
index 6dc4da7f609ff0e65f8bd6d74f1c697645e6cd94..99461d13f97615f1b63b254af58f1afdac03f29a 100644 |
--- a/gclient_scm.py |
+++ b/gclient_scm.py |
@@ -126,6 +126,13 @@ class SCMWrapper(object): |
class GitWrapper(SCMWrapper): |
"""Wrapper for Git""" |
+ def GetRevisionDate(self, revision): |
+ """Returns the given revision's date in ISO-8601 format (which contains the |
+ time zone).""" |
+ # TODO(floitsch): get the time-stamp of the given revision and not just the |
+ # time-stamp of the currently checked out revision. |
+ return self._Capture(['log', '-n', '1', '--format=%ai']) |
+ |
@staticmethod |
def cleanup(options, args, file_list): |
"""'Cleanup' the repo. |
@@ -186,6 +193,14 @@ class GitWrapper(SCMWrapper): |
if not revision: |
revision = default_rev |
+ if gclient_utils.IsDateRevision(revision): |
+ # Date-revisions only work on git-repositories if the reflog hasn't |
+ # expired yet. Use rev-list to get the corresponding revision. |
+ # git rev-list -n 1 --before='time-stamp' branchname |
+ if options.transitive: |
+ print('Warning: --transitive only works for SVN repositories.') |
+ revision = default_rev |
+ |
rev_str = ' at %s' % revision |
files = [] |
@@ -668,6 +683,13 @@ class GitWrapper(SCMWrapper): |
class SVNWrapper(SCMWrapper): |
""" Wrapper for SVN """ |
+ def GetRevisionDate(self, revision): |
+ """Returns the given revision's date in ISO-8601 format (which contains the |
+ time zone).""" |
+ date = scm.SVN.Capture(['propget', '--revprop', 'svn:date', '-r', revision, |
+ os.path.join(self.checkout_path, '.')]) |
+ return date.strip() |
+ |
def cleanup(self, options, args, file_list): |
"""Cleanup working copy.""" |
self._Run(['cleanup'] + args, options) |