From 5f947bba69de81f58f1adef10225c04727fa0ed5 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 3 Jul 2009 17:24:17 -0700 Subject: [PATCH] init: add -o, --origin to name manifest remote The -o option permits the user to control the name of the manifest's remote, which normally is hardcoded to be 'origin', but can differ because we derive it at runtime from the configuration file. Signed-off-by: Shawn O. Pearce --- manifest_xml.py | 5 ++++- project.py | 8 +++++--- repo | 6 +++++- subcmds/init.py | 36 ++++++++++++++++++++++++++---------- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/manifest_xml.py b/manifest_xml.py index 45896be..d888653 100644 --- a/manifest_xml.py +++ b/manifest_xml.py @@ -189,7 +189,10 @@ class XmlManifest(Manifest): def _Load(self): if not self._loaded: m = self.manifestProject - b = m.GetBranch(m.CurrentBranch).merge + b = m.GetBranch(m.CurrentBranch) + if b.remote and b.remote.name: + m.remote.name = b.remote.name + b = b.merge if b is not None and b.startswith(R_HEADS): b = b[len(R_HEADS):] self.branch = b diff --git a/project.py b/project.py index 6188ca7..c79e8fb 100644 --- a/project.py +++ b/project.py @@ -1442,10 +1442,12 @@ class MetaProject(Project): if self.Exists: cb = self.CurrentBranch if cb: - base = self.GetBranch(cb).merge - if base: - self.revisionExpr = base + cb = self.GetBranch(cb) + if cb.merge: + self.revisionExpr = cb.merge self.revisionId = None + if cb.remote and cb.remote.name: + self.remote.name = cb.remote.name @property def LastFetch(self): diff --git a/repo b/repo index f73fa58..ff7c418 100755 --- a/repo +++ b/repo @@ -28,7 +28,7 @@ if __name__ == '__main__': del magic # increment this whenever we make important changes to this script -VERSION = (1, 8) +VERSION = (1, 9) # increment this if the MAINTAINER_KEYS block is modified KEYRING_VERSION = (1,0) @@ -109,6 +109,10 @@ group = init_optparse.add_option_group('Manifest options') group.add_option('-u', '--manifest-url', dest='manifest_url', help='manifest repository location', metavar='URL') +group.add_option('-o', '--origin', + dest='manifest_origin', + help="use REMOTE instead of 'origin' to track upstream", + metavar='REMOTE') group.add_option('-b', '--manifest-branch', dest='manifest_branch', help='manifest branch or revision', metavar='REVISION') diff --git a/subcmds/init.py b/subcmds/init.py index 0586721..53c3a01 100644 --- a/subcmds/init.py +++ b/subcmds/init.py @@ -62,6 +62,10 @@ to update the working directory files. g.add_option('-b', '--manifest-branch', dest='manifest_branch', help='manifest branch or revision', metavar='REVISION') + g.add_option('-o', '--origin', + dest='manifest_origin', + help="use REMOTE instead of 'origin' to track upstream", + metavar='REMOTE') if isinstance(self.manifest, XmlManifest) \ or not self.manifest.manifestProject.Exists: g.add_option('-m', '--manifest-name', @@ -84,6 +88,27 @@ to update the working directory files. dest='no_repo_verify', action='store_true', help='do not verify repo source code') + def _ApplyOptions(self, opt, is_new): + m = self.manifest.manifestProject + + if is_new: + if opt.manifest_origin: + m.remote.name = opt.manifest_origin + + if opt.manifest_branch: + m.revisionExpr = opt.manifest_branch + else: + m.revisionExpr = 'refs/heads/master' + else: + if opt.manifest_origin: + print >>sys.stderr, 'fatal: cannot change origin name' + sys.exit(1) + + if opt.manifest_branch: + m.revisionExpr = opt.manifest_branch + else: + m.PreSync() + def _SyncManifest(self, opt): m = self.manifest.manifestProject is_new = not m.Exists @@ -98,16 +123,7 @@ to update the working directory files. print >>sys.stderr, ' from %s' % opt.manifest_url m._InitGitDir() - if opt.manifest_branch: - m.revisionExpr = opt.manifest_branch - else: - m.revisionExpr = 'refs/heads/master' - else: - if opt.manifest_branch: - m.revisionExpr = opt.manifest_branch - else: - m.PreSync() - + self._ApplyOptions(opt, is_new) if opt.manifest_url: r = m.GetRemote(m.remote.name) r.url = opt.manifest_url