diff --git a/manifest_xml.py b/manifest_xml.py index edcbada..b2918ca 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -284,7 +284,7 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md def _ParseGroups(self, groups): return [x for x in re.split(r'[,\s]+', groups) if x] - def Save(self, fd, peg_rev=False, peg_rev_upstream=True, groups=None): + def Save(self, fd, peg_rev=False, peg_rev_upstream=True, peg_rev_dest_branch=True, groups=None): """Write the current manifest out to the given file descriptor. """ mp = self.manifestProject @@ -389,6 +389,13 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md # Only save the origin if the origin is not a sha1, and the default # isn't our value e.setAttribute('upstream', p.revisionExpr) + + if peg_rev_dest_branch: + if p.dest_branch: + e.setAttribute('dest-branch', p.dest_branch) + elif value != p.revisionExpr: + e.setAttribute('dest-branch', p.revisionExpr) + else: revision = self.remotes[p.remote.orig_name].revision or d.revisionExpr if not revision or revision != p.revisionExpr: diff --git a/subcmds/manifest.py b/subcmds/manifest.py index 399e241..fb020d8 100644 --- a/subcmds/manifest.py +++ b/subcmds/manifest.py @@ -38,7 +38,8 @@ The -r option can be used to generate a manifest file with project revisions set to the current commit hash. These are known as "revision locked manifests", as they don't follow a particular branch. In this case, the 'upstream' attribute is set to the ref we were on -when the manifest was generated. +when the manifest was generated. The 'dest-branch' attribute is set +to indicate the remote ref to push changes to via 'repo upload'. """ @property @@ -62,6 +63,11 @@ when the manifest was generated. help='If in -r mode, do not write the upstream field. ' 'Only of use if the branch names for a sha1 manifest are ' 'sensitive.') + p.add_option('--suppress-dest-branch', dest='peg_rev_dest_branch', + default=True, action='store_false', + help='If in -r mode, do not write the dest-branch field. ' + 'Only of use if the branch names for a sha1 manifest are ' + 'sensitive.') p.add_option('-o', '--output-file', dest='output_file', default='-', @@ -79,7 +85,8 @@ when the manifest was generated. fd = open(opt.output_file, 'w') self.manifest.Save(fd, peg_rev=opt.peg_rev, - peg_rev_upstream=opt.peg_rev_upstream) + peg_rev_upstream=opt.peg_rev_upstream, + peg_rev_dest_branch=opt.peg_rev_dest_branch) fd.close() if opt.output_file != '-': print('Saved manifest to %s' % opt.output_file, file=sys.stderr)