OLD | NEW |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # git-cl -- a git-command for integrating reviews on Rietveld | 2 # git-cl -- a git-command for integrating reviews on Rietveld |
3 # Copyright (C) 2008 Evan Martin <martine@danga.com> | 3 # Copyright (C) 2008 Evan Martin <martine@danga.com> |
4 | 4 |
5 import errno | 5 import errno |
6 import logging | 6 import logging |
7 import optparse | 7 import optparse |
8 import os | 8 import os |
9 import re | 9 import re |
10 import StringIO | 10 import StringIO |
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
751 | 751 |
752 output = presubmit_support.DoPresubmitChecks(change, committing, | 752 output = presubmit_support.DoPresubmitChecks(change, committing, |
753 verbose=False, output_stream=sys.stdout, input_stream=sys.stdin, | 753 verbose=False, output_stream=sys.stdout, input_stream=sys.stdin, |
754 default_presubmit=None, may_prompt=may_prompt, tbr=tbr, | 754 default_presubmit=None, may_prompt=may_prompt, tbr=tbr, |
755 host_url=cl.GetRietveldServer()) | 755 host_url=cl.GetRietveldServer()) |
756 | 756 |
757 # TODO(dpranke): We should propagate the error out instead of calling exit(). | 757 # TODO(dpranke): We should propagate the error out instead of calling exit(). |
758 if not output.should_continue(): | 758 if not output.should_continue(): |
759 sys.exit(1) | 759 sys.exit(1) |
760 | 760 |
761 return output | |
762 | |
761 | 763 |
762 def CMDpresubmit(parser, args): | 764 def CMDpresubmit(parser, args): |
763 """run presubmit tests on the current changelist""" | 765 """run presubmit tests on the current changelist""" |
764 parser.add_option('--upload', action='store_true', | 766 parser.add_option('--upload', action='store_true', |
765 help='Run upload hook instead of the push/dcommit hook') | 767 help='Run upload hook instead of the push/dcommit hook') |
766 (options, args) = parser.parse_args(args) | 768 (options, args) = parser.parse_args(args) |
767 | 769 |
768 # Make sure index is up-to-date before running diff-index. | 770 # Make sure index is up-to-date before running diff-index. |
769 RunGit(['update-index', '--refresh', '-q'], error_ok=True) | 771 RunGit(['update-index', '--refresh', '-q'], error_ok=True) |
770 if RunGit(['diff-index', 'HEAD']): | 772 if RunGit(['diff-index', 'HEAD']): |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
823 return 1 | 825 return 1 |
824 | 826 |
825 cl = Changelist() | 827 cl = Changelist() |
826 if args: | 828 if args: |
827 base_branch = args[0] | 829 base_branch = args[0] |
828 else: | 830 else: |
829 # Default to diffing against the "upstream" branch. | 831 # Default to diffing against the "upstream" branch. |
830 base_branch = cl.GetUpstreamBranch() | 832 base_branch = cl.GetUpstreamBranch() |
831 args = [base_branch + "..."] | 833 args = [base_branch + "..."] |
832 | 834 |
833 if not options.bypass_hooks: | 835 if not options.bypass_hooks and not options.force: |
M-A Ruel
2011/03/15 19:11:57
What's the difference between --force and --bypass
chase
2011/03/15 20:48:58
IIRC, originally --bypass_hooks was to not run thi
| |
834 hook_results = RunHook(committing=False, upstream_branch=base_branch, | 836 hook_results = RunHook(committing=False, upstream_branch=base_branch, |
835 rietveld_server=cl.GetRietveldServer(), tbr=False, | 837 rietveld_server=cl.GetRietveldServer(), tbr=False, |
836 may_prompt=(not options.force)) | 838 may_prompt=True) |
837 if not options.reviewers and hook_results.reviewers: | 839 if not options.reviewers and hook_results.reviewers: |
838 options.reviewers = hook_results.reviewers | 840 options.reviewers = hook_results.reviewers |
839 | 841 |
840 | 842 |
841 # --no-ext-diff is broken in some versions of Git, so try to work around | 843 # --no-ext-diff is broken in some versions of Git, so try to work around |
842 # this by overriding the environment (but there is still a problem if the | 844 # this by overriding the environment (but there is still a problem if the |
843 # git config key "diff.external" is used). | 845 # git config key "diff.external" is used). |
844 env = os.environ.copy() | 846 env = os.environ.copy() |
845 if 'GIT_EXTERNAL_DIFF' in env: | 847 if 'GIT_EXTERNAL_DIFF' in env: |
846 del env['GIT_EXTERNAL_DIFF'] | 848 del env['GIT_EXTERNAL_DIFF'] |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
974 svn_head = RunGit(['log', '--grep=^git-svn-id:', '-1', | 976 svn_head = RunGit(['log', '--grep=^git-svn-id:', '-1', |
975 '--pretty=format:%H']) | 977 '--pretty=format:%H']) |
976 extra_commits = RunGit(['rev-list', '^' + svn_head, base_branch]) | 978 extra_commits = RunGit(['rev-list', '^' + svn_head, base_branch]) |
977 if extra_commits: | 979 if extra_commits: |
978 print ('This branch has %d additional commits not upstreamed yet.' | 980 print ('This branch has %d additional commits not upstreamed yet.' |
979 % len(extra_commits.splitlines())) | 981 % len(extra_commits.splitlines())) |
980 print ('Upstream "%s" or rebase this branch on top of the upstream trunk ' | 982 print ('Upstream "%s" or rebase this branch on top of the upstream trunk ' |
981 'before attempting to %s.' % (base_branch, cmd)) | 983 'before attempting to %s.' % (base_branch, cmd)) |
982 return 1 | 984 return 1 |
983 | 985 |
984 if not options.bypass_hooks: | 986 if not options.bypass_hooks and not options.force: |
985 RunHook(committing=True, upstream_branch=base_branch, | 987 RunHook(committing=True, upstream_branch=base_branch, |
986 rietveld_server=cl.GetRietveldServer(), tbr=options.tbr, | 988 rietveld_server=cl.GetRietveldServer(), tbr=options.tbr, |
987 may_prompt=(not options.force)) | 989 may_prompt=True) |
988 | 990 |
989 if not options.force and not options.bypass_hooks: | |
990 if cmd == 'dcommit': | 991 if cmd == 'dcommit': |
991 # Check the tree status if the tree status URL is set. | 992 # Check the tree status if the tree status URL is set. |
992 status = GetTreeStatus() | 993 status = GetTreeStatus() |
993 if 'closed' == status: | 994 if 'closed' == status: |
994 print ('The tree is closed. Please wait for it to reopen. Use ' | 995 print ('The tree is closed. Please wait for it to reopen. Use ' |
995 '"git cl dcommit -f" to commit on a closed tree.') | 996 '"git cl dcommit -f" to commit on a closed tree.') |
996 return 1 | 997 return 1 |
997 elif 'unknown' == status: | 998 elif 'unknown' == status: |
998 print ('Unable to determine tree status. Please verify manually and ' | 999 print ('Unable to determine tree status. Please verify manually and ' |
999 'use "git cl dcommit -f" to commit on a closed tree.') | 1000 'use "git cl dcommit -f" to commit on a closed tree.') |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1366 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' | 1367 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' |
1367 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) | 1368 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) |
1368 | 1369 |
1369 # Not a known command. Default to help. | 1370 # Not a known command. Default to help. |
1370 GenUsage(parser, 'help') | 1371 GenUsage(parser, 'help') |
1371 return CMDhelp(parser, argv) | 1372 return CMDhelp(parser, argv) |
1372 | 1373 |
1373 | 1374 |
1374 if __name__ == '__main__': | 1375 if __name__ == '__main__': |
1375 sys.exit(main(sys.argv[1:])) | 1376 sys.exit(main(sys.argv[1:])) |
OLD | NEW |