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 __future__ import print_function | 10 from __future__ import print_function |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 | 763 |
764 def GetIsGerrit(self): | 764 def GetIsGerrit(self): |
765 """Return true if this repo is assosiated with gerrit code review system.""" | 765 """Return true if this repo is assosiated with gerrit code review system.""" |
766 if self.is_gerrit is None: | 766 if self.is_gerrit is None: |
767 self.is_gerrit = self._GetConfig('gerrit.host', error_ok=True) | 767 self.is_gerrit = self._GetConfig('gerrit.host', error_ok=True) |
768 return self.is_gerrit | 768 return self.is_gerrit |
769 | 769 |
770 def GetSquashGerritUploads(self): | 770 def GetSquashGerritUploads(self): |
771 """Return true if uploads to Gerrit should be squashed by default.""" | 771 """Return true if uploads to Gerrit should be squashed by default.""" |
772 if self.squash_gerrit_uploads is None: | 772 if self.squash_gerrit_uploads is None: |
773 self.squash_gerrit_uploads = ( | 773 self.squash_gerrit_uploads = self.GetSquashGerritUploadsOverride() |
774 RunGit(['config', '--bool', 'gerrit.squash-uploads'], | 774 if self.squash_gerrit_uploads is None: |
775 error_ok=True).strip() == 'true') | 775 # Default is squash now (http://crbug.com/611892#c23). |
| 776 self.squash_gerrit_uploads = not ( |
| 777 RunGit(['config', '--bool', 'gerrit.squash-uploads'], |
| 778 error_ok=True).strip() == 'false') |
776 return self.squash_gerrit_uploads | 779 return self.squash_gerrit_uploads |
777 | 780 |
| 781 def GetSquashGerritUploadsOverride(self): |
| 782 """Return True or False if codereview.settings should be overridden. |
| 783 |
| 784 Returns None if no override has been defined. |
| 785 """ |
| 786 # See also http://crbug.com/611892#c23 |
| 787 result = RunGit(['config', '--bool', 'gerrit.override-squash-uploads'], |
| 788 error_ok=True).strip() |
| 789 if result == 'true': |
| 790 return True |
| 791 if result == 'false': |
| 792 return False |
| 793 return None |
| 794 |
778 def GetGerritSkipEnsureAuthenticated(self): | 795 def GetGerritSkipEnsureAuthenticated(self): |
779 """Return True if EnsureAuthenticated should not be done for Gerrit | 796 """Return True if EnsureAuthenticated should not be done for Gerrit |
780 uploads.""" | 797 uploads.""" |
781 if self.gerrit_skip_ensure_authenticated is None: | 798 if self.gerrit_skip_ensure_authenticated is None: |
782 self.gerrit_skip_ensure_authenticated = ( | 799 self.gerrit_skip_ensure_authenticated = ( |
783 RunGit(['config', '--bool', 'gerrit.skip-ensure-authenticated'], | 800 RunGit(['config', '--bool', 'gerrit.skip-ensure-authenticated'], |
784 error_ok=True).strip() == 'true') | 801 error_ok=True).strip() == 'true') |
785 return self.gerrit_skip_ensure_authenticated | 802 return self.gerrit_skip_ensure_authenticated |
786 | 803 |
787 def GetGitEditor(self): | 804 def GetGitEditor(self): |
(...skipping 1543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2331 if reply.lower().startswith('y'): | 2348 if reply.lower().startswith('y'): |
2332 gclient_utils.rm_file_or_tree(hook) | 2349 gclient_utils.rm_file_or_tree(hook) |
2333 print('Gerrit commit-msg hook removed.') | 2350 print('Gerrit commit-msg hook removed.') |
2334 else: | 2351 else: |
2335 print('OK, will keep Gerrit commit-msg hook in place.') | 2352 print('OK, will keep Gerrit commit-msg hook in place.') |
2336 | 2353 |
2337 def CMDUploadChange(self, options, args, change): | 2354 def CMDUploadChange(self, options, args, change): |
2338 """Upload the current branch to Gerrit.""" | 2355 """Upload the current branch to Gerrit.""" |
2339 if options.squash and options.no_squash: | 2356 if options.squash and options.no_squash: |
2340 DieWithError('Can only use one of --squash or --no-squash') | 2357 DieWithError('Can only use one of --squash or --no-squash') |
2341 options.squash = ((settings.GetSquashGerritUploads() or options.squash) and | 2358 |
2342 not options.no_squash) | 2359 if not options.squash and not options.no_squash: |
| 2360 # Load default for user, repo, squash=true, in this order. |
| 2361 options.squash = settings.GetSquashGerritUploads() |
| 2362 elif options.no_squash: |
| 2363 options.squash = False |
2343 | 2364 |
2344 # We assume the remote called "origin" is the one we want. | 2365 # We assume the remote called "origin" is the one we want. |
2345 # It is probably not worthwhile to support different workflows. | 2366 # It is probably not worthwhile to support different workflows. |
2346 gerrit_remote = 'origin' | 2367 gerrit_remote = 'origin' |
2347 | 2368 |
2348 remote, remote_branch = self.GetRemoteBranch() | 2369 remote, remote_branch = self.GetRemoteBranch() |
2349 branch = GetTargetRef(remote, remote_branch, options.target_branch, | 2370 branch = GetTargetRef(remote, remote_branch, options.target_branch, |
2350 pending_prefix='') | 2371 pending_prefix='') |
2351 | 2372 |
2352 if options.squash: | 2373 if options.squash: |
(...skipping 2667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5020 if __name__ == '__main__': | 5041 if __name__ == '__main__': |
5021 # These affect sys.stdout so do it outside of main() to simplify mocks in | 5042 # These affect sys.stdout so do it outside of main() to simplify mocks in |
5022 # unit testing. | 5043 # unit testing. |
5023 fix_encoding.fix_encoding() | 5044 fix_encoding.fix_encoding() |
5024 setup_color.init() | 5045 setup_color.init() |
5025 try: | 5046 try: |
5026 sys.exit(main(sys.argv[1:])) | 5047 sys.exit(main(sys.argv[1:])) |
5027 except KeyboardInterrupt: | 5048 except KeyboardInterrupt: |
5028 sys.stderr.write('interrupted\n') | 5049 sys.stderr.write('interrupted\n') |
5029 sys.exit(1) | 5050 sys.exit(1) |
OLD | NEW |