mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
Don't upload when dest branch is not merge branch
Example: - `repo init -b master` / sync a project - In one project: `git checkout -b work origin/branch-thats-not-master` - make some changes, `git commit` - `repo upload .` - Upload will now be skipped with a warning instead of being uploaded to master Change-Id: I990b36217b75fe3c8b4d776e7fefa1c7d9ab7282
This commit is contained in:
parent
59b31cb6e0
commit
3bfd72158c
@ -21,6 +21,7 @@ import sys
|
|||||||
from command import InteractiveCommand
|
from command import InteractiveCommand
|
||||||
from editor import Editor
|
from editor import Editor
|
||||||
from error import HookError, UploadError
|
from error import HookError, UploadError
|
||||||
|
from git_command import GitCommand
|
||||||
from project import RepoHook
|
from project import RepoHook
|
||||||
|
|
||||||
from pyversion import is_python3
|
from pyversion import is_python3
|
||||||
@ -345,6 +346,19 @@ Gerrit Code Review: http://code.google.com/p/gerrit/
|
|||||||
opt.auto_topic = branch.project.config.GetBoolean(key)
|
opt.auto_topic = branch.project.config.GetBoolean(key)
|
||||||
|
|
||||||
destination = opt.dest_branch or branch.project.dest_branch
|
destination = opt.dest_branch or branch.project.dest_branch
|
||||||
|
|
||||||
|
# Make sure our local branch is not setup to track a different remote branch
|
||||||
|
merge_branch = self._GetMergeBranch(branch.project)
|
||||||
|
full_dest = 'refs/heads/%s' % destination
|
||||||
|
if not opt.dest_branch and merge_branch and merge_branch != full_dest:
|
||||||
|
print('merge branch %s does not match destination branch %s'
|
||||||
|
% (merge_branch, full_dest))
|
||||||
|
print('skipping upload.')
|
||||||
|
print('Please use `--destination %s` if this is intentional'
|
||||||
|
% destination)
|
||||||
|
branch.uploaded = False
|
||||||
|
continue
|
||||||
|
|
||||||
branch.UploadForReview(people, auto_topic=opt.auto_topic, draft=opt.draft, dest_branch=destination)
|
branch.UploadForReview(people, auto_topic=opt.auto_topic, draft=opt.draft, dest_branch=destination)
|
||||||
branch.uploaded = True
|
branch.uploaded = True
|
||||||
except UploadError as e:
|
except UploadError as e:
|
||||||
@ -379,6 +393,21 @@ Gerrit Code Review: http://code.google.com/p/gerrit/
|
|||||||
if have_errors:
|
if have_errors:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
def _GetMergeBranch(self, project):
|
||||||
|
p = GitCommand(project,
|
||||||
|
['rev-parse', '--abbrev-ref', 'HEAD'],
|
||||||
|
capture_stdout = True,
|
||||||
|
capture_stderr = True)
|
||||||
|
p.Wait()
|
||||||
|
local_branch = p.stdout.strip()
|
||||||
|
p = GitCommand(project,
|
||||||
|
['config', '--get', 'branch.%s.merge' % local_branch],
|
||||||
|
capture_stdout = True,
|
||||||
|
capture_stderr = True)
|
||||||
|
p.Wait()
|
||||||
|
merge_branch = p.stdout.strip()
|
||||||
|
return merge_branch
|
||||||
|
|
||||||
def Execute(self, opt, args):
|
def Execute(self, opt, args):
|
||||||
project_list = self.GetProjects(args)
|
project_list = self.GetProjects(args)
|
||||||
pending = []
|
pending = []
|
||||||
|
Loading…
Reference in New Issue
Block a user