f.close()
# the editor
- if 'EDITOR' in os.environ:
+ if config.has_option('stgit', 'editor'):
+ editor = config.get('stgit', 'editor')
+ elif 'EDITOR' in os.environ:
editor = os.environ['EDITOR']
else:
editor = 'vi'
def set_bottom(self, string, backup = False):
if backup:
- self.__set_field('bottom.old', self.__get_field('bottom'))
+ curr = self.__get_field('bottom')
+ if curr != string:
+ self.__set_field('bottom.old', curr)
+ else:
+ self.__set_field('bottom.old', None)
self.__set_field('bottom', string)
def get_top(self):
def set_top(self, string, backup = False):
if backup:
- self.__set_field('top.old', self.__get_field('top'))
+ curr = self.__get_field('top')
+ if curr != string:
+ self.__set_field('top.old', curr)
+ else:
+ self.__set_field('top.old', None)
self.__set_field('top', string)
def restore_old_boundaries(self):
if top and bottom:
self.__set_field('bottom', bottom)
self.__set_field('top', top)
+ return True
else:
- raise StackException, 'No patch undo information'
+ return False
def get_description(self):
return self.__get_field('description', True)
self.__unapplied_file = os.path.join(self.__patch_dir, 'unapplied')
self.__current_file = os.path.join(self.__patch_dir, 'current')
+ def get_branch(self):
+ """Return the branch name for the Series object
+ """
+ return self.__name
+
def __set_current(self, name):
"""Sets the topmost patch
"""
return commit_id
- def new_patch(self, name, message = None, can_edit = True, show_patch = False,
+ def new_patch(self, name, message = None, can_edit = True,
+ unapplied = False, show_patch = False,
+ top = None, bottom = None,
author_name = None, author_email = None, author_date = None,
committer_name = None, committer_email = None):
"""Creates a new patch
patch = Patch(name, self.__patch_dir)
patch.create()
- patch.set_bottom(head)
- patch.set_top(head)
+
+ if bottom:
+ patch.set_bottom(bottom)
+ else:
+ patch.set_bottom(head)
+ if top:
+ patch.set_top(top)
+ else:
+ patch.set_top(head)
+
patch.set_description(descr)
patch.set_authname(author_name)
patch.set_authemail(author_email)
patch.set_commname(committer_name)
patch.set_commemail(committer_email)
- append_string(self.__applied_file, patch.get_name())
- self.__set_current(name)
+ if unapplied:
+ patches = [patch.get_name()] + self.get_unapplied()
+
+ f = file(self.__unapplied_file, 'w+')
+ f.writelines([line + '\n' for line in patches])
+ f.close()
+ else:
+ append_string(self.__applied_file, patch.get_name())
+ self.__set_current(name)
def delete_patch(self, name):
"""Deletes a patch
patch = Patch(name, self.__patch_dir)
git.reset()
self.pop_patch(name)
- patch.restore_old_boundaries()
+ return patch.restore_old_boundaries()
def pop_patch(self, name):
"""Pops the top patch from the stack