diff --git a/git_cl.py b/git_cl.py index 06594f040..6e564010d 100755 --- a/git_cl.py +++ b/git_cl.py @@ -635,12 +635,17 @@ or verify this branch is set up to track another (via the --track argument to return True def GetGitBaseUrlFromConfig(self): - """Return the configured base URL from branch..baseurl. + """Return the configured base URL from branch..canonical-url. Returns None if it is not set. """ - return RunGit(['config', 'branch.%s.base-url' % self.GetBranch()], - error_ok=True).strip() + branch = self.GetBranch() + url = RunGit(['config', 'branch.%s.canonical-url' % branch], + error_ok=True).strip() + if not url: + url = RunGit(['config', 'branch.%s.base-url' % branch], + error_ok=True).strip() + return url def GetRemoteUrl(self): """Return the configured remote URL, e.g. 'git://example.org/foo.git/'. @@ -1074,6 +1079,13 @@ def LoadCodereviewSettingsFromFile(fileobj): RunGit(['config', keyvals['PUSH_URL_CONFIG'], keyvals['ORIGIN_URL_CONFIG']]) + if 'CANONICAL_URL' in keyvals: + branchref = RunGit(['symbolic-ref', 'HEAD']).strip() + branch = ShortBranchName(branchref) + RunGit(['config', 'branch.%s.canonical-url' % branch, + keyvals['CANONICAL_URL']], + error_ok=False) + def urlretrieve(source, destination): """urllib is broken for SSL connections via a proxy therefore we diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py index 2d204408c..a6aa2878d 100755 --- a/tests/git_cl_test.py +++ b/tests/git_cl_test.py @@ -204,6 +204,7 @@ class TestGitCl(TestCase): return [ ((['git', 'config', 'core.editor'],), ''), ] + cc_call + private_call + [ + ((['git', 'config', 'branch.master.canonical-url'],), ''), ((['git', 'config', 'branch.master.base-url'],), ''), ((['git', 'config', '--local', '--get-regexp', '^svn-remote\\.'],),