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 45896be9..d888653d 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 6188ca72..c79e8fb9 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 f73fa58b..ff7c4188 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 0586721f..53c3a010 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