OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 # Copyright (C) 2008 Evan Martin <martine@danga.com> | 6 # Copyright (C) 2008 Evan Martin <martine@danga.com> |
7 | 7 |
8 """A git-command for integrating reviews on Rietveld.""" | 8 """A git-command for integrating reviews on Rietveld.""" |
9 | 9 |
10 import logging | 10 import logging |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 class Settings(object): | 139 class Settings(object): |
140 def __init__(self): | 140 def __init__(self): |
141 self.default_server = None | 141 self.default_server = None |
142 self.cc = None | 142 self.cc = None |
143 self.root = None | 143 self.root = None |
144 self.is_git_svn = None | 144 self.is_git_svn = None |
145 self.svn_branch = None | 145 self.svn_branch = None |
146 self.tree_status_url = None | 146 self.tree_status_url = None |
147 self.viewvc_url = None | 147 self.viewvc_url = None |
148 self.updated = False | 148 self.updated = False |
149 self.did_migrate_check = False | |
150 self.is_gerrit = None | 149 self.is_gerrit = None |
151 | 150 |
152 def LazyUpdateIfNeeded(self): | 151 def LazyUpdateIfNeeded(self): |
153 """Updates the settings from a codereview.settings file, if available.""" | 152 """Updates the settings from a codereview.settings file, if available.""" |
154 if not self.updated: | 153 if not self.updated: |
155 cr_settings_file = FindCodereviewSettingsFile() | 154 cr_settings_file = FindCodereviewSettingsFile() |
156 if cr_settings_file: | 155 if cr_settings_file: |
157 LoadCodereviewSettingsFromFile(cr_settings_file) | 156 LoadCodereviewSettingsFromFile(cr_settings_file) |
158 self.updated = True | 157 self.updated = True |
159 | 158 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 """Return true if this repo is assosiated with gerrit code review system.""" | 268 """Return true if this repo is assosiated with gerrit code review system.""" |
270 if self.is_gerrit is None: | 269 if self.is_gerrit is None: |
271 self.is_gerrit = self._GetConfig('gerrit.host', error_ok=True) | 270 self.is_gerrit = self._GetConfig('gerrit.host', error_ok=True) |
272 return self.is_gerrit | 271 return self.is_gerrit |
273 | 272 |
274 def _GetConfig(self, param, **kwargs): | 273 def _GetConfig(self, param, **kwargs): |
275 self.LazyUpdateIfNeeded() | 274 self.LazyUpdateIfNeeded() |
276 return RunGit(['config', param], **kwargs).strip() | 275 return RunGit(['config', param], **kwargs).strip() |
277 | 276 |
278 | 277 |
279 def CheckForMigration(): | |
280 """Migrate from the old issue format, if found. | |
281 | |
282 We used to store the branch<->issue mapping in a file in .git, but it's | |
283 better to store it in the .git/config, since deleting a branch deletes that | |
284 branch's entry there. | |
285 """ | |
286 | |
287 # Don't run more than once. | |
288 if settings.did_migrate_check: | |
289 return | |
290 | |
291 gitdir = RunGit(['rev-parse', '--git-dir']).strip() | |
292 storepath = os.path.join(gitdir, 'cl-mapping') | |
293 if os.path.exists(storepath): | |
294 print "old-style git-cl mapping file (%s) found; migrating." % storepath | |
295 store = open(storepath, 'r') | |
296 for line in store: | |
297 branch, issue = line.strip().split() | |
298 RunGit(['config', 'branch.%s.rietveldissue' % ShortBranchName(branch), | |
299 issue]) | |
300 store.close() | |
301 os.remove(storepath) | |
302 settings.did_migrate_check = True | |
303 | |
304 | |
305 def ShortBranchName(branch): | 278 def ShortBranchName(branch): |
306 """Convert a name like 'refs/heads/foo' to just 'foo'.""" | 279 """Convert a name like 'refs/heads/foo' to just 'foo'.""" |
307 return branch.replace('refs/heads/', '') | 280 return branch.replace('refs/heads/', '') |
308 | 281 |
309 | 282 |
310 class Changelist(object): | 283 class Changelist(object): |
311 def __init__(self, branchref=None): | 284 def __init__(self, branchref=None): |
312 # Poke settings so we get the "configure your server" message if necessary. | 285 # Poke settings so we get the "configure your server" message if necessary. |
313 global settings | 286 global settings |
314 if not settings: | 287 if not settings: |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 | 387 |
415 Returns None if there is no remote. | 388 Returns None if there is no remote. |
416 """ | 389 """ |
417 remote = self.FetchUpstreamTuple()[0] | 390 remote = self.FetchUpstreamTuple()[0] |
418 if remote == '.': | 391 if remote == '.': |
419 return None | 392 return None |
420 return RunGit(['config', 'remote.%s.url' % remote], error_ok=True).strip() | 393 return RunGit(['config', 'remote.%s.url' % remote], error_ok=True).strip() |
421 | 394 |
422 def GetIssue(self): | 395 def GetIssue(self): |
423 if not self.has_issue: | 396 if not self.has_issue: |
424 CheckForMigration() | |
425 issue = RunGit(['config', self._IssueSetting()], error_ok=True).strip() | 397 issue = RunGit(['config', self._IssueSetting()], error_ok=True).strip() |
426 if issue: | 398 if issue: |
427 self.issue = issue | 399 self.issue = issue |
428 self.rietveld_server = gclient_utils.UpgradeToHttps(RunGit( | 400 self.rietveld_server = gclient_utils.UpgradeToHttps(RunGit( |
429 ['config', self._RietveldServer()], error_ok=True).strip()) | 401 ['config', self._RietveldServer()], error_ok=True).strip()) |
430 else: | 402 else: |
431 self.issue = None | 403 self.issue = None |
432 if not self.rietveld_server: | 404 if not self.rietveld_server: |
433 self.rietveld_server = settings.GetDefaultServerUrl() | 405 self.rietveld_server = settings.GetDefaultServerUrl() |
434 self.has_issue = True | 406 self.has_issue = True |
(...skipping 1063 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1498 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) | 1470 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) |
1499 | 1471 |
1500 # Not a known command. Default to help. | 1472 # Not a known command. Default to help. |
1501 GenUsage(parser, 'help') | 1473 GenUsage(parser, 'help') |
1502 return CMDhelp(parser, argv) | 1474 return CMDhelp(parser, argv) |
1503 | 1475 |
1504 | 1476 |
1505 if __name__ == '__main__': | 1477 if __name__ == '__main__': |
1506 fix_encoding.fix_encoding() | 1478 fix_encoding.fix_encoding() |
1507 sys.exit(main(sys.argv[1:])) | 1479 sys.exit(main(sys.argv[1:])) |
OLD | NEW |