Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(498)

Side by Side Diff: git_cl.py

Issue 2022183003: Fix & refactor git cl patch. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tests/git_cl_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 4074 matching lines...) Expand 10 before | Expand all | Expand 10 after
4085 group.add_option('--pull', action='store_true', dest='pull', 4085 group.add_option('--pull', action='store_true', dest='pull',
4086 help='Performs a pull before reapplying.') 4086 help='Performs a pull before reapplying.')
4087 parser.add_option_group(group) 4087 parser.add_option_group(group)
4088 4088
4089 auth.add_auth_options(parser) 4089 auth.add_auth_options(parser)
4090 _add_codereview_select_options(parser) 4090 _add_codereview_select_options(parser)
4091 (options, args) = parser.parse_args(args) 4091 (options, args) = parser.parse_args(args)
4092 _process_codereview_select_options(parser, options) 4092 _process_codereview_select_options(parser, options)
4093 auth_config = auth.extract_auth_config_from_options(options) 4093 auth_config = auth.extract_auth_config_from_options(options)
4094 4094
4095 cl = Changelist(auth_config=auth_config, codereview=options.forced_codereview)
4096 4095
4097 issue_arg = None
4098 if options.reapply : 4096 if options.reapply :
4097 if options.newbranch:
4098 parser.error('--reapply works on the current branch only')
4099 if len(args) > 0: 4099 if len(args) > 0:
4100 parser.error('--reapply implies no additional arguments.') 4100 parser.error('--reapply implies no additional arguments')
4101 4101
4102 issue_arg = cl.GetIssue() 4102 cl = Changelist(auth_config=auth_config,
4103 codereview=options.forced_codereview)
4104 if not cl.GetIssue():
4105 parser.error('current branch must have an associated issue')
4106
4103 upstream = cl.GetUpstreamBranch() 4107 upstream = cl.GetUpstreamBranch()
4104 if upstream == None: 4108 if upstream == None:
4105 parser.error('No upstream branch specified. Cannot reset branch') 4109 parser.error('No upstream branch specified. Cannot reset branch')
4106 4110
4107 RunGit(['reset', '--hard', upstream]) 4111 RunGit(['reset', '--hard', upstream])
4108 if options.pull: 4112 if options.pull:
4109 RunGit(['pull']) 4113 RunGit(['pull'])
4110 else:
4111 if len(args) != 1:
4112 parser.error('Must specify issue number or url')
4113 issue_arg = args[0]
4114 4114
4115 if not issue_arg: 4115 return cl.CMDPatchIssue(cl.GetIssue(), options.reject, options.nocommit,
4116 parser.print_help() 4116 options.directory)
4117
4118 if len(args) != 1 or not args[0]:
4119 parser.error('Must specify issue number or url')
4120
4121 # We don't want uncommitted changes mixed up with the patch.
4122 if git_common.is_dirty_git_tree('patch'):
4117 return 1 4123 return 1
4118 4124
4125 if options.newbranch:
4126 if options.force:
4127 RunGit(['branch', '-D', options.newbranch],
4128 stderr=subprocess2.PIPE, error_ok=True)
4129 RunGit(['new-branch', options.newbranch])
4130
4131 cl = Changelist(auth_config=auth_config, codereview=options.forced_codereview)
4132
4119 if cl.IsGerrit(): 4133 if cl.IsGerrit():
4120 if options.reject: 4134 if options.reject:
4121 parser.error('--reject is not supported with Gerrit codereview.') 4135 parser.error('--reject is not supported with Gerrit codereview.')
4122 if options.nocommit: 4136 if options.nocommit:
4123 parser.error('--nocommit is not supported with Gerrit codereview.') 4137 parser.error('--nocommit is not supported with Gerrit codereview.')
4124 if options.directory: 4138 if options.directory:
4125 parser.error('--directory is not supported with Gerrit codereview.') 4139 parser.error('--directory is not supported with Gerrit codereview.')
4126 4140
4127 # We don't want uncommitted changes mixed up with the patch. 4141 return cl.CMDPatchIssue(args[0], options.reject, options.nocommit,
4128 if git_common.is_dirty_git_tree('patch'):
4129 return 1
4130
4131 if options.newbranch:
4132 if options.reapply:
4133 parser.error("--reapply excludes any option other than --pull")
4134 if options.force:
4135 RunGit(['branch', '-D', options.newbranch],
4136 stderr=subprocess2.PIPE, error_ok=True)
4137 RunGit(['checkout', '-b', options.newbranch,
4138 Changelist().GetUpstreamBranch()])
4139
4140 return cl.CMDPatchIssue(issue_arg, options.reject, options.nocommit,
4141 options.directory) 4142 options.directory)
4142 4143
4143 4144
4144 def CMDrebase(parser, args): 4145 def CMDrebase(parser, args):
4145 """Rebases current branch on top of svn repo.""" 4146 """Rebases current branch on top of svn repo."""
4146 # Provide a wrapper for git svn rebase to help avoid accidental 4147 # Provide a wrapper for git svn rebase to help avoid accidental
4147 # git svn dcommit. 4148 # git svn dcommit.
4148 # It's the only command that doesn't use parser at all since we just defer 4149 # It's the only command that doesn't use parser at all since we just defer
4149 # execution to git-svn. 4150 # execution to git-svn.
4150 4151
(...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after
4887 if __name__ == '__main__': 4888 if __name__ == '__main__':
4888 # These affect sys.stdout so do it outside of main() to simplify mocks in 4889 # These affect sys.stdout so do it outside of main() to simplify mocks in
4889 # unit testing. 4890 # unit testing.
4890 fix_encoding.fix_encoding() 4891 fix_encoding.fix_encoding()
4891 setup_color.init() 4892 setup_color.init()
4892 try: 4893 try:
4893 sys.exit(main(sys.argv[1:])) 4894 sys.exit(main(sys.argv[1:]))
4894 except KeyboardInterrupt: 4895 except KeyboardInterrupt:
4895 sys.stderr.write('interrupted\n') 4896 sys.stderr.write('interrupted\n')
4896 sys.exit(1) 4897 sys.exit(1)
OLDNEW
« no previous file with comments | « no previous file | tests/git_cl_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698