elif os.path.isfile(fname):
os.remove(fname)
-
+
class Patch(StgitObject):
"""Basic patch implementation
"""
self.create_empty_field('top')
def delete(self):
- for f in os.listdir(self._dir()):
- os.remove(os.path.join(self._dir(), f))
- os.rmdir(self._dir())
- git.delete_ref(self.__top_ref)
+ if os.path.isdir(self._dir()):
+ for f in os.listdir(self._dir()):
+ os.remove(os.path.join(self._dir(), f))
+ os.rmdir(self._dir())
+ else:
+ out.warn('Patch directory "%s" does not exist' % self._dir())
+ try:
+ # the reference might not exist if the repository was corrupted
+ git.delete_ref(self.__top_ref)
+ except git.GitException, e:
+ out.warn(str(e))
if git.ref_exists(self.__log_ref):
git.delete_ref(self.__log_ref)
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())
+ assert commit or (not top or (bottom == git.get_commit(top).get_parent()))
if name != None:
self.__patch_name_valid(name)
patch = self.get_patch(name)
if git.get_head_file() == self.get_name():
- if keep and not git.apply_diff(git.get_head(), patch.get_bottom()):
+ if keep and not git.apply_diff(git.get_head(), patch.get_bottom(),
+ check_index = False):
raise StackException(
'Failed to pop patches while preserving the local changes')
git.switch(patch.get_bottom(), keep)