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 and Gerrit.""" | 8 """A git-command for integrating reviews on Rietveld and Gerrit.""" |
9 | 9 |
10 from distutils.version import LooseVersion | 10 from distutils.version import LooseVersion |
(...skipping 1237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1248 """Set this branch's issue. If issue isn't given, clears the issue.""" | 1248 """Set this branch's issue. If issue isn't given, clears the issue.""" |
1249 issue_setting = self._codereview_impl.IssueSetting(self.GetBranch()) | 1249 issue_setting = self._codereview_impl.IssueSetting(self.GetBranch()) |
1250 codereview_setting = self._codereview_impl.GetCodereviewServerSetting() | 1250 codereview_setting = self._codereview_impl.GetCodereviewServerSetting() |
1251 if issue: | 1251 if issue: |
1252 self.issue = issue | 1252 self.issue = issue |
1253 RunGit(['config', issue_setting, str(issue)]) | 1253 RunGit(['config', issue_setting, str(issue)]) |
1254 codereview_server = self._codereview_impl.GetCodereviewServer() | 1254 codereview_server = self._codereview_impl.GetCodereviewServer() |
1255 if codereview_server: | 1255 if codereview_server: |
1256 RunGit(['config', codereview_setting, codereview_server]) | 1256 RunGit(['config', codereview_setting, codereview_server]) |
1257 else: | 1257 else: |
1258 current_issue = self.GetIssue() | 1258 # Reset it regardless. It doesn't hurt. |
1259 if current_issue: | 1259 config_settings = [issue_setting, self._codereview_impl.PatchsetSetting()] |
1260 RunGit(['config', '--unset', issue_setting]) | 1260 for prop in (['last-upload-hash'] + |
| 1261 self._codereview_impl._PostUnsetIssueProperties()): |
| 1262 config_settings.append('branch.%s.%s' % (self.GetBranch(), prop)) |
| 1263 for setting in config_settings: |
| 1264 RunGit(['config', '--unset', setting], error_ok=True) |
1261 self.issue = None | 1265 self.issue = None |
1262 self.SetPatchset(None) | 1266 self.patchset = None |
1263 | 1267 |
1264 def GetChange(self, upstream_branch, author): | 1268 def GetChange(self, upstream_branch, author): |
1265 if not self.GitSanityChecks(upstream_branch): | 1269 if not self.GitSanityChecks(upstream_branch): |
1266 DieWithError('\nGit sanity check failure') | 1270 DieWithError('\nGit sanity check failure') |
1267 | 1271 |
1268 root = settings.GetRelativeRoot() | 1272 root = settings.GetRelativeRoot() |
1269 if not root: | 1273 if not root: |
1270 root = '.' | 1274 root = '.' |
1271 absroot = os.path.abspath(root) | 1275 absroot = os.path.abspath(root) |
1272 | 1276 |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1490 @classmethod | 1494 @classmethod |
1491 def IssueSettingSuffix(cls): | 1495 def IssueSettingSuffix(cls): |
1492 """Returns name of git config setting which stores issue number for a given | 1496 """Returns name of git config setting which stores issue number for a given |
1493 branch.""" | 1497 branch.""" |
1494 raise NotImplementedError() | 1498 raise NotImplementedError() |
1495 | 1499 |
1496 def PatchsetSetting(self): | 1500 def PatchsetSetting(self): |
1497 """Returns name of git config setting which stores issue number.""" | 1501 """Returns name of git config setting which stores issue number.""" |
1498 raise NotImplementedError() | 1502 raise NotImplementedError() |
1499 | 1503 |
| 1504 def _PostUnsetIssueProperties(self): |
| 1505 """Which branch-specific properties to erase when unsettin issue.""" |
| 1506 raise NotImplementedError() |
| 1507 |
1500 def GetRieveldObjForPresubmit(self): | 1508 def GetRieveldObjForPresubmit(self): |
1501 # This is an unfortunate Rietveld-embeddedness in presubmit. | 1509 # This is an unfortunate Rietveld-embeddedness in presubmit. |
1502 # For non-Rietveld codereviews, this probably should return a dummy object. | 1510 # For non-Rietveld codereviews, this probably should return a dummy object. |
1503 raise NotImplementedError() | 1511 raise NotImplementedError() |
1504 | 1512 |
1505 def GetGerritObjForPresubmit(self): | 1513 def GetGerritObjForPresubmit(self): |
1506 # None is valid return value, otherwise presubmit_support.GerritAccessor. | 1514 # None is valid return value, otherwise presubmit_support.GerritAccessor. |
1507 return None | 1515 return None |
1508 | 1516 |
1509 def UpdateDescriptionRemote(self, description): | 1517 def UpdateDescriptionRemote(self, description): |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1731 """Return the git setting that stores this change's most recent patchset.""" | 1739 """Return the git setting that stores this change's most recent patchset.""" |
1732 return 'branch.%s.rietveldpatchset' % self.GetBranch() | 1740 return 'branch.%s.rietveldpatchset' % self.GetBranch() |
1733 | 1741 |
1734 def GetCodereviewServerSetting(self): | 1742 def GetCodereviewServerSetting(self): |
1735 """Returns the git setting that stores this change's rietveld server.""" | 1743 """Returns the git setting that stores this change's rietveld server.""" |
1736 branch = self.GetBranch() | 1744 branch = self.GetBranch() |
1737 if branch: | 1745 if branch: |
1738 return 'branch.%s.rietveldserver' % branch | 1746 return 'branch.%s.rietveldserver' % branch |
1739 return None | 1747 return None |
1740 | 1748 |
| 1749 def _PostUnsetIssueProperties(self): |
| 1750 """Which branch-specific properties to erase when unsetting issue.""" |
| 1751 return ['rietveldserver'] |
| 1752 |
1741 def GetRieveldObjForPresubmit(self): | 1753 def GetRieveldObjForPresubmit(self): |
1742 return self.RpcServer() | 1754 return self.RpcServer() |
1743 | 1755 |
1744 def SetCQState(self, new_state): | 1756 def SetCQState(self, new_state): |
1745 props = self.GetIssueProperties() | 1757 props = self.GetIssueProperties() |
1746 if props.get('private'): | 1758 if props.get('private'): |
1747 DieWithError('Cannot set-commit on private issue') | 1759 DieWithError('Cannot set-commit on private issue') |
1748 | 1760 |
1749 if new_state == _CQState.COMMIT: | 1761 if new_state == _CQState.COMMIT: |
1750 self.SetFlag('commit', '1') | 1762 self.SetFlag('commit', '1') |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2087 """Return the git setting that stores this change's most recent patchset.""" | 2099 """Return the git setting that stores this change's most recent patchset.""" |
2088 return 'branch.%s.gerritpatchset' % self.GetBranch() | 2100 return 'branch.%s.gerritpatchset' % self.GetBranch() |
2089 | 2101 |
2090 def GetCodereviewServerSetting(self): | 2102 def GetCodereviewServerSetting(self): |
2091 """Returns the git setting that stores this change's Gerrit server.""" | 2103 """Returns the git setting that stores this change's Gerrit server.""" |
2092 branch = self.GetBranch() | 2104 branch = self.GetBranch() |
2093 if branch: | 2105 if branch: |
2094 return 'branch.%s.gerritserver' % branch | 2106 return 'branch.%s.gerritserver' % branch |
2095 return None | 2107 return None |
2096 | 2108 |
| 2109 def _PostUnsetIssueProperties(self): |
| 2110 """Which branch-specific properties to erase when unsetting issue.""" |
| 2111 return [ |
| 2112 'gerritserver', |
| 2113 'gerritsquashhash', |
| 2114 ] |
| 2115 |
2097 def GetRieveldObjForPresubmit(self): | 2116 def GetRieveldObjForPresubmit(self): |
2098 class ThisIsNotRietveldIssue(object): | 2117 class ThisIsNotRietveldIssue(object): |
2099 def __nonzero__(self): | 2118 def __nonzero__(self): |
2100 # This is a hack to make presubmit_support think that rietveld is not | 2119 # This is a hack to make presubmit_support think that rietveld is not |
2101 # defined, yet still ensure that calls directly result in a decent | 2120 # defined, yet still ensure that calls directly result in a decent |
2102 # exception message below. | 2121 # exception message below. |
2103 return False | 2122 return False |
2104 | 2123 |
2105 def __getattr__(self, attr): | 2124 def __getattr__(self, attr): |
2106 print( | 2125 print( |
(...skipping 2781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4888 if __name__ == '__main__': | 4907 if __name__ == '__main__': |
4889 # These affect sys.stdout so do it outside of main() to simplify mocks in | 4908 # These affect sys.stdout so do it outside of main() to simplify mocks in |
4890 # unit testing. | 4909 # unit testing. |
4891 fix_encoding.fix_encoding() | 4910 fix_encoding.fix_encoding() |
4892 setup_color.init() | 4911 setup_color.init() |
4893 try: | 4912 try: |
4894 sys.exit(main(sys.argv[1:])) | 4913 sys.exit(main(sys.argv[1:])) |
4895 except KeyboardInterrupt: | 4914 except KeyboardInterrupt: |
4896 sys.stderr.write('interrupted\n') | 4915 sys.stderr.write('interrupted\n') |
4897 sys.exit(1) | 4916 sys.exit(1) |
OLD | NEW |