| 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):
|
|
|