Index: git_cl.py |
=================================================================== |
--- git_cl.py (revision 130362) |
+++ git_cl.py (working copy) |
@@ -411,7 +411,14 @@ |
GIT_INSTRUCTIONS_URL) |
return self._remote |
+ def GetGitBaseUrlFromConfig(self): |
+ """Return the configured base URL from branch.<branchname>.baseurl. |
+ Returns None if it is not set. |
+ """ |
+ return RunGit(['config', 'branch.%s.base-url' % self.GetBranch()], |
+ error_ok=True).strip() |
+ |
def GetRemoteUrl(self): |
"""Return the configured remote URL, e.g. 'git://example.org/foo.git/'. |
@@ -787,6 +794,21 @@ |
return 0 |
+def CMDbaseurl(parser, args): |
+ """get or set base-url for this branch""" |
+ branchref = RunGit(['symbolic-ref', 'HEAD']).strip() |
+ branch = ShortBranchName(branchref) |
+ _, args = parser.parse_args(args) |
+ if not args: |
+ print("Current base-url:") |
+ return RunGit(['config', 'branch.%s.base-url' % branch], |
M-A Ruel
2012/04/03 15:29:58
Won't this crash if the value is not present?
kalmard
2012/04/03 15:37:42
It returns a valid error. I don't think that's a p
|
+ error_ok=False).strip() |
+ else: |
+ print("Setting base-url to %s" % args[0]) |
+ return RunGit(['config', 'branch.%s.base-url' % branch, args[0]], |
M-A Ruel
2012/04/03 15:29:58
Also, isn't this annoying to have this per branch
kalmard
2012/04/03 15:37:42
I figured it made sense to make this per-branch si
|
+ error_ok=False).strip() |
+ |
+ |
def CMDstatus(parser, args): |
"""show status of changelists""" |
parser.add_option('--field', |
@@ -982,18 +1004,19 @@ |
# Include the upstream repo's URL in the change -- this is useful for |
# projects that have their source spread across multiple repos. |
- remote_url = None |
- if settings.GetIsGitSvn(): |
- # URL is dependent on the current directory. |
- data = RunGit(['svn', 'info'], cwd=settings.GetRoot()) |
- if data: |
- keys = dict(line.split(': ', 1) for line in data.splitlines() |
- if ': ' in line) |
- remote_url = keys.get('URL', None) |
- else: |
- if cl.GetRemoteUrl() and '/' in cl.GetUpstreamBranch(): |
- remote_url = (cl.GetRemoteUrl() + '@' |
- + cl.GetUpstreamBranch().split('/')[-1]) |
+ remote_url = cl.GetGitBaseUrlFromConfig() |
+ if not remote_url: |
+ if settings.GetIsGitSvn(): |
+ # URL is dependent on the current directory. |
+ data = RunGit(['svn', 'info'], cwd=settings.GetRoot()) |
+ if data: |
+ keys = dict(line.split(': ', 1) for line in data.splitlines() |
+ if ': ' in line) |
+ remote_url = keys.get('URL', None) |
+ else: |
+ if cl.GetRemoteUrl() and '/' in cl.GetUpstreamBranch(): |
+ remote_url = (cl.GetRemoteUrl() + '@' |
+ + cl.GetUpstreamBranch().split('/')[-1]) |
if remote_url: |
upload_args.extend(['--base_url', remote_url]) |