From c0af9df25a01b9d6eb4dd7fddbff3c56be588123 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20K=C3=A5gedal?= Date: Sat, 15 Sep 2007 00:31:54 +0200 Subject: [PATCH] Clear up the semantics of Series.new_patch MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch adds a number of assertions to document and verify the complex restrictions of the input parameters to the Series.new_patch function. It also adds the requirement that 'before_existing' and 'commit' cannot be true at the same time when calling it, instead of updating 'commit' inside the function. Signed-off-by: David Kågedal Signed-off-by: Karl Hasselström --- stgit/commands/uncommit.py | 1 + stgit/stack.py | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/stgit/commands/uncommit.py b/stgit/commands/uncommit.py index 3cf2f0a..0cd0fb0 100644 --- a/stgit/commands/uncommit.py +++ b/stgit/commands/uncommit.py @@ -129,6 +129,7 @@ def func(parser, options, args): name_email_date(commit.get_author()) crt_series.new_patch(patchname, can_edit = False, before_existing = True, + commit = False, top = commit_id, bottom = parent, message = commit.get_log(), author_name = author_name, diff --git a/stgit/stack.py b/stgit/stack.py index e61d45b..5e9d4fb 100644 --- a/stgit/stack.py +++ b/stgit/stack.py @@ -841,9 +841,16 @@ class Series(PatchSet): author_name = None, author_email = None, author_date = None, committer_name = None, committer_email = None, before_existing = False): - """Creates a new patch + """Creates a new patch, either pointing to an existing commit object, + or by creating a new commit object. """ + assert commit or (top and bottom) + assert not before_existing or (top and bottom) + assert not (commit and before_existing) + assert (top and bottom) or (not top and not bottom) + assert not top or (bottom == git.get_commit(top).get_parent()) + if name != None: self.__patch_name_valid(name) if self.patch_exists(name): @@ -883,9 +890,6 @@ class Series(PatchSet): if before_existing: insert_string(self.__applied_file, patch.get_name()) - # no need to commit anything as the object is already - # present (mainly used by 'uncommit') - commit = False elif unapplied: patches = [patch.get_name()] + self.get_unapplied() write_strings(self.__unapplied_file, patches) @@ -910,6 +914,8 @@ class Series(PatchSet): committer_email = committer_email) # set the patch top to the new commit patch.set_top(commit_id) + else: + assert top != bottom self.log_patch(patch, 'new') -- 2.11.0