Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1768)

Unified Diff: build/util/lastchange.py

Issue 6609039: Fetch repository root for git-svn checkouts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: p Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/util/lastchange.py
diff --git a/build/util/lastchange.py b/build/util/lastchange.py
index 872564065c64560f5483c5a00e5124fc159654d3..4d7a1fe808d4a2707c0378ddef54d3f41a267144 100755
--- a/build/util/lastchange.py
+++ b/build/util/lastchange.py
@@ -140,6 +140,29 @@ def FetchGitSVNURL(directory):
return ''
+def FetchGitSVNRoot(directory):
+ """
+ Fetch root of SVN repository bound to git.
+
+ Errors are swallowed.
+
+ Returns:
+ SVN root repository.
+ """
+ if IsGitSVN(directory):
+ git_command = ['config', '--get-regexp', '^svn-remote.svn.url$']
+ proc = RunGitCommand(directory, git_command)
+ if proc:
+ output = proc.communicate()[0].strip()
+ if proc.returncode == 0:
+ # Zero return code implies presence of requested configuration variable.
+ # Its value is second (last) field of output.
+ match = re.search(r'\S+$', output)
+ if match:
+ return match.group(0)
+ return ''
+
+
def LookupGitSVNRevision(directory, depth):
"""
Fetch the Git-SVN identifier for the local tree.
@@ -149,11 +172,11 @@ def LookupGitSVNRevision(directory, depth):
"""
if not IsGitSVN(directory):
return None
- git_re = re.compile('^\s*git-svn-id:\s+(\S+)@(\d+)', re.M)
+ git_re = re.compile(r'^\s*git-svn-id:\s+(\S+)@(\d+)')
proc = RunGitCommand(directory, ['log', '-' + str(depth)])
if proc:
for line in proc.stdout:
- match = git_re.search(line)
+ match = git_re.match(line)
if match:
id = match.group(2)
if id:
@@ -185,7 +208,9 @@ def FetchGitSVNRevision(directory):
return None
if IsGitSVNDirty(directory):
revision = revision + '-dirty'
- return VersionInfo(FetchGitSVNURL(directory), 'git-svn', revision)
+ url = FetchGitSVNURL(directory)
+ root = FetchGitSVNRoot(directory)
+ return VersionInfo(url, root, revision)
def FetchVersionInfo(default_lastchange, directory=None):
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698