Fix how we format the full destination branch when uploading.
If the dest-branch attribute is set in the project manifest, then
we need to push to that branch. Previously, we would unconditionally
pre-pend the refs/heads prefix to it. The dest-branch attribute is
allowed to be a ref expression though, so it may already have it.
Simple fix is to check if it already has the prefix before adding it.
Bug: crbug.com/gerrit/12770
Change-Id: I45d6107ed6cf305cf223023b0ddad4278f7f4146
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268152
Reviewed-by: Mike Frysinger <vapier@google.com>
Tested-by: Sean McAllister <smcallis@google.com>
diff --git a/subcmds/upload.py b/subcmds/upload.py
index cf3c8a9..3dd9fd2 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -23,6 +23,7 @@
from editor import Editor
from error import HookError, UploadError
from git_command import GitCommand
+from git_refs import R_HEADS
from project import RepoHook
from pyversion import is_python3
@@ -462,7 +463,10 @@
# Make sure our local branch is not setup to track a different remote branch
merge_branch = self._GetMergeBranch(branch.project)
if destination:
- full_dest = 'refs/heads/%s' % destination
+ full_dest = destination
+ if not full_dest.startswith(R_HEADS):
+ full_dest = R_HEADS + full_dest
+
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))