From e756c412e35b9ac1a126985d4d047dbd52f29277 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Mon, 13 Apr 2009 11:51:15 -0700 Subject: Add 'repo selfupdate' to upgrade only repo Users may want to upgrade only repo to the latest release, but leave their working tree state alone and avoid 'repo sync'. Signed-off-by: Shawn O. Pearce --- subcmds/selfupdate.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 subcmds/selfupdate.py (limited to 'subcmds/selfupdate.py') diff --git a/subcmds/selfupdate.py b/subcmds/selfupdate.py new file mode 100644 index 00000000..de6904c4 --- /dev/null +++ b/subcmds/selfupdate.py @@ -0,0 +1,59 @@ +# +# Copyright (C) 2009 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from optparse import SUPPRESS_HELP +import sys + +from command import Command, MirrorSafeCommand +from subcmds.sync import _PostRepoUpgrade +from subcmds.sync import _PostRepoFetch + +class Selfupdate(Command, MirrorSafeCommand): + common = False + helpSummary = "Update repo to the latest version" + helpUsage = """ +%prog +""" + helpDescription = """ +The '%prog' command upgrades repo to the latest version, if a +newer version is available. + +Normally this is done automatically by 'repo sync' and does not +need to be performed by an end-user. +""" + + def _Options(self, p): + p.add_option('--no-repo-verify', + dest='no_repo_verify', action='store_true', + help='do not verify repo source code') + p.add_option('--repo-upgraded', + dest='repo_upgraded', action='store_true', + help=SUPPRESS_HELP) + + def Execute(self, opt, args): + rp = self.manifest.repoProject + rp.PreSync() + + if opt.repo_upgraded: + _PostRepoUpgrade(self.manifest) + + else: + if not rp.Sync_NetworkHalf(): + print >>sys.stderr, "error: can't update repo" + sys.exit(1) + + _PostRepoFetch(rp, + no_repo_verify = opt.no_repo_verify, + verbose = True) -- cgit v1.2.3-54-g00ecf