Files
git-upstream/git_upstream/commands/supersede.py
Darragh Bailey f0f03b4c91 Support a finalize method for argument parsing
Allow for more complex manipulation of arguments to be contained within
a separate method for clarity.

Change-Id: I9d5f369511401591d3267a8654bfb871f8208820
2016-01-21 22:17:01 +00:00

71 lines
2.9 KiB
Python

#
# Copyright (c) 2012, 2013, 2014 Hewlett-Packard Development Company, L.P.
#
# 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 git_upstream.commands import GitUpstreamCommand
from git_upstream.lib.supersede import Supersede
from git_upstream.log import LogDedentMixin
class SupersedeCommand(LogDedentMixin, GitUpstreamCommand):
"""Mark a commit as superseded by a set of change-ids.
Marked commits will be skipped during the upstream rebasing process.
See also the "git upstream import" command.
"""
name = "supersede"
def __init__(self, *args, **kwargs):
# make sure to correctly initialize inherited objects before performing
# any computation
super(SupersedeCommand, self).__init__(*args, **kwargs)
self.parser.add_argument(
'commit', metavar='<commit>', nargs=None,
help='Commit to be marked as superseded')
self.parser.add_argument(
'change_ids', metavar='<change id>', nargs='+',
help='Change id which makes <commit> obsolete. The change id must '
'be present in <upstream-branch> to drop <commit>. If more '
'than one change id is specified, all must be present in '
'<upstream-branch> to drop <commit>')
self.parser.add_argument(
'-f', '--force', dest='force', required=False, action='store_true',
default=False,
help='Apply the commit mark even if one or more change ids could '
'not be found. Use this flag carefully as commits will not '
'be dropped during import command execution as long as all '
'associated change ids are present in the local copy of the '
'upstream branch')
self.parser.add_argument(
'-u', '--upstream-branch', metavar='<upstream-branch>',
dest='upstream_branch', required=False, default='upstream/master',
help='Search change ids values in <upstream-branch> branch '
'(default: %(default)s)')
def execute(self):
supersede = Supersede(git_object=self.args.commit,
change_ids=self.args.change_ids,
upstream_branch=self.args.upstream_branch,
force=self.args.force)
if supersede.mark():
self.logger.notice("Supersede mark created successfully")
# vim:sw=4:sts=4:ts=4:et: