From 3e768c9dc7f77cb2960f990f6e2d15890e96abdb Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 10 Apr 2009 16:59:36 -0700 Subject: Add 'repo sync -d' to detach projects from their current topic The -d flag moves the project back to a detached HEAD state, matching what is listed in the manifest. This can be useful to set a client to something stable (or at least well-known), such as before a sequence of 'repo download' commands are used to get some changes for testing. Signed-off-by: Shawn O. Pearce --- subcmds/sync.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'subcmds/sync.py') diff --git a/subcmds/sync.py b/subcmds/sync.py index 01e2eba6..542b4c20 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -44,12 +44,21 @@ line. Projects can be specified either by name, or by a relative or absolute path to the project's local directory. If no projects are specified, '%prog' will synchronize all projects listed in the manifest. + +The -d/--detach option can be used to switch specified projects +back to the manifest revision. This option is especially helpful +if the project is currently on a topic branch, but the manifest +revision is temporarily needed. """ def _Options(self, p): p.add_option('-n','--network-only', dest='network_only', action='store_true', help="fetch only, don't update working tree") + p.add_option('-d','--detach', + dest='detach_head', action='store_true', + help='detach projects back to manifest revision') + p.add_option('--no-repo-verify', dest='no_repo_verify', action='store_true', help='do not verify repo source code') @@ -68,6 +77,10 @@ the manifest. return fetched def Execute(self, opt, args): + if opt.network_only and opt.detach_head: + print >>sys.stderr, 'error: cannot combine -n and -d' + sys.exit(1) + rp = self.manifest.repoProject rp.PreSync() @@ -111,7 +124,8 @@ the manifest. for project in all: if project.worktree: - if not project.Sync_LocalHalf(): + if not project.Sync_LocalHalf( + detach_head=opt.detach_head): sys.exit(1) -- cgit v1.2.3-54-g00ecf