| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2006-2009 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 # Wrapper script around Rietveld's upload.py that groups files into | 6 # Wrapper script around Rietveld's upload.py that groups files into |
| 7 # changelists. | 7 # changelists. |
| 8 | 8 |
| 9 import getpass | 9 import getpass |
| 10 import os | 10 import os |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 if '__just_initialized' not in CODEREVIEW_SETTINGS: | 180 if '__just_initialized' not in CODEREVIEW_SETTINGS: |
| 181 for line in GetCachedFile(CODEREVIEW_SETTINGS_FILE).splitlines(): | 181 for line in GetCachedFile(CODEREVIEW_SETTINGS_FILE).splitlines(): |
| 182 if not line or line.startswith("#"): | 182 if not line or line.startswith("#"): |
| 183 continue | 183 continue |
| 184 k, v = line.split(": ", 1) | 184 k, v = line.split(": ", 1) |
| 185 CODEREVIEW_SETTINGS[k] = v | 185 CODEREVIEW_SETTINGS[k] = v |
| 186 CODEREVIEW_SETTINGS.setdefault('__just_initialized', None) | 186 CODEREVIEW_SETTINGS.setdefault('__just_initialized', None) |
| 187 return CODEREVIEW_SETTINGS.get(key, "") | 187 return CODEREVIEW_SETTINGS.get(key, "") |
| 188 | 188 |
| 189 | 189 |
| 190 def IsTreeOpen(): | |
| 191 """Fetches the tree status and returns either True or False.""" | |
| 192 url = GetCodeReviewSetting('STATUS') | |
| 193 status = "" | |
| 194 if url: | |
| 195 status = urllib2.urlopen(url).read() | |
| 196 return status.find('0') == -1 | |
| 197 | |
| 198 | |
| 199 def Warn(msg): | 190 def Warn(msg): |
| 200 ErrorExit(msg, exit=False) | 191 ErrorExit(msg, exit=False) |
| 201 | 192 |
| 202 | 193 |
| 203 def ErrorExit(msg, exit=True): | 194 def ErrorExit(msg, exit=True): |
| 204 """Print an error message to stderr and optionally exit.""" | 195 """Print an error message to stderr and optionally exit.""" |
| 205 print >>sys.stderr, msg | 196 print >>sys.stderr, msg |
| 206 if exit: | 197 if exit: |
| 207 sys.exit(1) | 198 sys.exit(1) |
| 208 | 199 |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 600 Basic commands: | 591 Basic commands: |
| 601 ----------------------------------------- | 592 ----------------------------------------- |
| 602 gcl change change_name | 593 gcl change change_name |
| 603 Add/remove files to a changelist. Only scans the current directory and | 594 Add/remove files to a changelist. Only scans the current directory and |
| 604 subdirectories. | 595 subdirectories. |
| 605 | 596 |
| 606 gcl upload change_name [-r reviewer1@gmail.com,reviewer2@gmail.com,...] | 597 gcl upload change_name [-r reviewer1@gmail.com,reviewer2@gmail.com,...] |
| 607 [--send_mail] [--no_try] [--no_presubmit] | 598 [--send_mail] [--no_try] [--no_presubmit] |
| 608 Uploads the changelist to the server for review. | 599 Uploads the changelist to the server for review. |
| 609 | 600 |
| 610 gcl commit change_name [--no_presubmit] [--force] | 601 gcl commit change_name [--no_presubmit] |
| 611 Commits the changelist to the repository. | 602 Commits the changelist to the repository. |
| 612 | 603 |
| 613 gcl lint change_name | 604 gcl lint change_name |
| 614 Check all the files in the changelist for possible style violations. | 605 Check all the files in the changelist for possible style violations. |
| 615 | 606 |
| 616 Advanced commands: | 607 Advanced commands: |
| 617 ----------------------------------------- | 608 ----------------------------------------- |
| 618 gcl delete change_name | 609 gcl delete change_name |
| 619 Deletes a changelist. | 610 Deletes a changelist. |
| 620 | 611 |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 866 if not change_info.FileList(): | 857 if not change_info.FileList(): |
| 867 print "Nothing to commit, changelist is empty." | 858 print "Nothing to commit, changelist is empty." |
| 868 return | 859 return |
| 869 | 860 |
| 870 if not "--no_presubmit" in args: | 861 if not "--no_presubmit" in args: |
| 871 if not DoPresubmitChecks(change_info, committing=True): | 862 if not DoPresubmitChecks(change_info, committing=True): |
| 872 return | 863 return |
| 873 else: | 864 else: |
| 874 args.remove("--no_presubmit") | 865 args.remove("--no_presubmit") |
| 875 | 866 |
| 876 no_tree_status_check = ("--force" in args or "-f" in args) | |
| 877 if not no_tree_status_check and not IsTreeOpen(): | |
| 878 print ("Error: The tree is closed. Try again later or use --force to force" | |
| 879 " the commit. May the --force be with you.") | |
| 880 return | |
| 881 | |
| 882 commit_cmd = ["svn", "commit", "--non-recursive"] | 867 commit_cmd = ["svn", "commit", "--non-recursive"] |
| 883 filename = '' | 868 filename = '' |
| 884 if change_info.issue: | 869 if change_info.issue: |
| 885 # Get the latest description from Rietveld. | 870 # Get the latest description from Rietveld. |
| 886 change_info.description = GetIssueDescription(change_info.issue) | 871 change_info.description = GetIssueDescription(change_info.issue) |
| 887 | 872 |
| 888 commit_message = change_info.description.replace('\r\n', '\n') | 873 commit_message = change_info.description.replace('\r\n', '\n') |
| 889 if change_info.issue: | 874 if change_info.issue: |
| 890 commit_message += ('\nReview URL: http://%s/%s' % | 875 commit_message += ('\nReview URL: http://%s/%s' % |
| 891 (GetCodeReviewSetting("CODE_REVIEW_SERVER"), | 876 (GetCodeReviewSetting("CODE_REVIEW_SERVER"), |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1140 # the files. This allows commands such as 'gcl diff xxx' to work. | 1125 # the files. This allows commands such as 'gcl diff xxx' to work. |
| 1141 args =["svn", command] | 1126 args =["svn", command] |
| 1142 root = GetRepositoryRoot() | 1127 root = GetRepositoryRoot() |
| 1143 args.extend([os.path.join(root, x) for x in change_info.FileList()]) | 1128 args.extend([os.path.join(root, x) for x in change_info.FileList()]) |
| 1144 RunShell(args, True) | 1129 RunShell(args, True) |
| 1145 return 0 | 1130 return 0 |
| 1146 | 1131 |
| 1147 | 1132 |
| 1148 if __name__ == "__main__": | 1133 if __name__ == "__main__": |
| 1149 sys.exit(main()) | 1134 sys.exit(main()) |
| OLD | NEW |