From: Lingchaox Xin Date: Fri, 5 Jul 2013 09:09:50 +0000 (+0800) Subject: GitRepository.push: Add 'force' option X-Git-Tag: debian/0.6.4~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=68baa9a3934a22339f164499a75cf771489c9781;p=tools%2Fgit-buildpackage.git GitRepository.push: Add 'force' option Signed-off-by: Lingchaox Xin Signed-off-by: Markus Lehtonen --- diff --git a/gbp/git/repository.py b/gbp/git/repository.py index 7d52216..6389d28 100644 --- a/gbp/git/repository.py +++ b/gbp/git/repository.py @@ -1077,7 +1077,7 @@ class GitRepository(object): args += [ repo ] if repo else [] self._git_command("pull", args) - def push(self, repo=None, src=None, dst=None, ff_only=True): + def push(self, repo=None, src=None, dst=None, ff_only=True, force=False): """ Push changes to the remote repo @@ -1089,9 +1089,13 @@ class GitRepository(object): @type dst: C{str} @param ff_only: only push if it's a fast forward update @type ff_only: C{bool} + @param force: force push, can cause the remote repository to lose + commits; use it with care + @type force: C{bool} """ args = GitArgs() args.add_cond(repo, repo) + args.add_true(force, "-f") # Allow for src == '' to delete dst on the remote if src != None: @@ -1101,6 +1105,7 @@ class GitRepository(object): if not ff_only: refspec = '+%s' % refspec args.add(refspec) + self._git_command("push", args.args) def push_tag(self, repo, tag): diff --git a/tests/test_GitRepository.py b/tests/test_GitRepository.py index 3ea0356..791cf70 100644 --- a/tests/test_GitRepository.py +++ b/tests/test_GitRepository.py @@ -615,6 +615,7 @@ def test_fetch(): >>> clone.push() >>> clone.push('origin') >>> clone.push('origin', 'master') + >>> clone.push('origin', 'master', force=True) >>> clone.create_tag('tag3') >>> clone.push_tag('origin', 'tag3') >>> clone.add_remote_repo('foo', repo_dir)