diff --git a/git_cl.py b/git_cl.py index bad7c57ac8..28f99fad46 100755 --- a/git_cl.py +++ b/git_cl.py @@ -554,6 +554,11 @@ class Settings(object): def GetBugPrefix(self): return self._GetRietveldConfig('bug-prefix', error_ok=True) + def GetIsSkipDependencyUpload(self, branch_name): + """Returns true if specified branch should skip dep uploads.""" + return self._GetBranchConfig(branch_name, 'skip-deps-uploads', + error_ok=True) + def GetRunPostUploadHook(self): run_post_upload_hook = self._GetRietveldConfig( 'run-post-upload-hook', error_ok=True) @@ -605,6 +610,9 @@ class Settings(object): def _GetRietveldConfig(self, param, **kwargs): return self._GetConfig('rietveld.' + param, **kwargs) + def _GetBranchConfig(self, branch_name, param, **kwargs): + return self._GetConfig('branch.' + branch_name + '.' + param, **kwargs) + def _GetConfig(self, param, **kwargs): self.LazyUpdateIfNeeded() return RunGit(['config', param], **kwargs).strip() @@ -2191,21 +2199,27 @@ def RietveldUpload(options, args, cl, change): if remote is '.': # A local branch is being tracked. local_branch = ShortBranchName(upstream_branch) - auth_config = auth.extract_auth_config_from_options(options) - branch_cl = Changelist(branchref=local_branch, auth_config=auth_config) - branch_cl_issue_url = branch_cl.GetIssueURL() - branch_cl_issue = branch_cl.GetIssue() - branch_cl_patchset = branch_cl.GetPatchset() - if branch_cl_issue_url and branch_cl_issue and branch_cl_patchset: - upload_args.extend( - ['--depends_on_patchset', '%s:%s' % ( - branch_cl_issue, branch_cl_patchset)]) + if settings.GetIsSkipDependencyUpload(local_branch): print - print ('The current branch (%s) is tracking a local branch (%s) with ' - 'an associated CL.') % (cl.GetBranch(), local_branch) - print 'Adding %s/#ps%s as a dependency patchset.' % ( - branch_cl_issue_url, branch_cl_patchset) + print ('Skipping dependency patchset upload because git config ' + 'branch.%s.skip-deps-uploads is set to True.' % local_branch) print + else: + auth_config = auth.extract_auth_config_from_options(options) + branch_cl = Changelist(branchref=local_branch, auth_config=auth_config) + branch_cl_issue_url = branch_cl.GetIssueURL() + branch_cl_issue = branch_cl.GetIssue() + branch_cl_patchset = branch_cl.GetPatchset() + if branch_cl_issue_url and branch_cl_issue and branch_cl_patchset: + upload_args.extend( + ['--depends_on_patchset', '%s:%s' % ( + branch_cl_issue, branch_cl_patchset)]) + print + print ('The current branch (%s) is tracking a local branch (%s) with ' + 'an associated CL.') % (cl.GetBranch(), local_branch) + print 'Adding %s/#ps%s as a dependency patchset.' % ( + branch_cl_issue_url, branch_cl_patchset) + print project = settings.GetProject() if project: @@ -2256,7 +2270,14 @@ def cleanup_list(l): @subcommand.usage('[args to "git diff"]') def CMDupload(parser, args): - """Uploads the current changelist to codereview.""" + """Uploads the current changelist to codereview. + + Can skip dependency patchset uploads for a branch by running: + git config branch.branch_name.skip-deps-uploads True + To unset run: + git config --unset branch.branch_name.skip-deps-uploads + Can also set the above globally by using the --global flag. + """ parser.add_option('--bypass-hooks', action='store_true', dest='bypass_hooks', help='bypass upload presubmit hook') parser.add_option('--bypass-watchlists', action='store_true',