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 <davidk@lysator.liu.se>
---
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 fd19a82..733a241 100644
--- a/stgit/stack.py
+++ b/stgit/stack.py
@@ -833,9 +833,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):
@@ -873,9 +880,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)
@@ -900,6 +904,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')
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html