From c7a4eefa7e775b64916a66b52ca6c5f31e2cf5c8 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 5 Mar 2009 10:32:38 -0800 Subject: Add repo manifest -o to save a manifest This can be useful to create a new manifest from an existing client, especially if the client wants to use the "-r" option to set each project's revision to the current commit SHA-1, making a sort of a tag file that can be used to recreate this exact state elsewhere. Signed-off-by: Shawn O. Pearce --- subcmds/manifest.py | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'subcmds/manifest.py') diff --git a/subcmds/manifest.py b/subcmds/manifest.py index 69906faa..4374a9d0 100644 --- a/subcmds/manifest.py +++ b/subcmds/manifest.py @@ -16,16 +16,21 @@ import os import sys -from command import Command +from command import PagedCommand -class Manifest(Command): +class Manifest(PagedCommand): common = False - helpSummary = "Manifest file" + helpSummary = "Manifest inspection utility" helpUsage = """ -%prog +%prog [-o {-|NAME.xml} [-r]] """ _helpDescription = """ -The repo manifest file describes the projects mapped into the client. + +With the -o option, exports the current manifest for inspection. +The manifest and (if present) local_manifest.xml are combined +together to produce a single manifest file. This file can be stored +in a Git repository for use during future 'repo init' invocations. + """ @property @@ -39,6 +44,34 @@ The repo manifest file describes the projects mapped into the client. fd.close() return help + def _Options(self, p): + p.add_option('-r', '--revision-as-HEAD', + dest='peg_rev', action='store_true', + help='Save revisions as current HEAD') + p.add_option('-o', '--output-file', + dest='output_file', + help='File to save the manifest to', + metavar='-|NAME.xml') + + def _Output(self, opt): + if opt.output_file == '-': + fd = sys.stdout + else: + fd = open(opt.output_file, 'w') + self.manifest.Save(fd, + peg_rev = opt.peg_rev) + fd.close() + if opt.output_file != '-': + print >>sys.stderr, 'Saved manifest to %s' % opt.output_file + def Execute(self, opt, args): + if args: + self.Usage() + + if opt.output_file is not None: + self._Output(opt) + return + + print >>sys.stderr, 'error: no operation to perform' print >>sys.stderr, 'error: see repo help manifest' sys.exit(1) -- cgit v1.2.3-54-g00ecf