The name of the current patch, if any, is always the last line of
patches/<branch>/applied (and there is no current patch if and only if
the "applied" file is empty). So use that instead, and stop having to
worry about keeping the redundant "current" file up-to-date.
Signed-off-by: Karl Hasselström <kha@treskal.com>
self.__applied_file = os.path.join(self._dir(), 'applied')
self.__unapplied_file = os.path.join(self._dir(), 'unapplied')
self.__hidden_file = os.path.join(self._dir(), 'hidden')
self.__applied_file = os.path.join(self._dir(), 'applied')
self.__unapplied_file = os.path.join(self._dir(), 'unapplied')
self.__hidden_file = os.path.join(self._dir(), 'hidden')
- self.__current_file = os.path.join(self._dir(), 'current')
self.__descr_file = os.path.join(self._dir(), 'description')
# where this series keeps its patches
self.__descr_file = os.path.join(self._dir(), 'description')
# where this series keeps its patches
- def __set_current(self, name):
- """Sets the topmost patch
- """
- self._set_field('current', name)
-
def get_patch(self, name):
"""Return a Patch object for the given name
"""
def get_patch(self, name):
"""Return a Patch object for the given name
"""
def get_current(self):
"""Return the name of the topmost patch, or None if there is
no such patch."""
def get_current(self):
"""Return the name of the topmost patch, or None if there is
no such patch."""
- name = self._get_field('current')
- if name == '':
+ try:
+ applied = self.get_applied()
+ except StackException:
+ # No "applied" file: branch is not initialized.
+ return None
+ try:
+ return applied[-1]
+ except IndexError:
+ # No patches applied.
def get_applied(self):
if not os.path.isfile(self.__applied_file):
def get_applied(self):
if not os.path.isfile(self.__applied_file):
os.remove(self.__unapplied_file)
if os.path.exists(self.__hidden_file):
os.remove(self.__hidden_file)
os.remove(self.__unapplied_file)
if os.path.exists(self.__hidden_file):
os.remove(self.__hidden_file)
- if os.path.exists(self.__current_file):
- os.remove(self.__current_file)
if os.path.exists(self.__descr_file):
os.remove(self.__descr_file)
if os.path.exists(self._dir()+'/orig-base'):
if os.path.exists(self.__descr_file):
os.remove(self.__descr_file)
if os.path.exists(self._dir()+'/orig-base'):
self.log_patch(patch, 'new')
insert_string(self.__applied_file, patch.get_name())
self.log_patch(patch, 'new')
insert_string(self.__applied_file, patch.get_name())
- if not self.get_current():
- self.__set_current(name)
else:
append_string(self.__applied_file, patch.get_name())
else:
append_string(self.__applied_file, patch.get_name())
- self.__set_current(name)
if refresh:
self.refresh_patch(cache_update = False, log = 'new')
if refresh:
self.refresh_patch(cache_update = False, log = 'new')
f.writelines([line + '\n' for line in unapplied])
f.close()
f.writelines([line + '\n' for line in unapplied])
f.close()
- self.__set_current(name)
-
return forwarded
def merged_patches(self, names):
return forwarded
def merged_patches(self, names):
f.writelines([line + '\n' for line in unapplied])
f.close()
f.writelines([line + '\n' for line in unapplied])
f.close()
- self.__set_current(name)
-
# head == bottom case doesn't need to refresh the patch
if empty or head != bottom:
if not ex:
# head == bottom case doesn't need to refresh the patch
if empty or head != bottom:
if not ex:
f.writelines([line + '\n' for line in applied])
f.close()
f.writelines([line + '\n' for line in applied])
f.close()
- if applied == []:
- self.__set_current(None)
- else:
- self.__set_current(applied[-1])
-
def empty_patch(self, name):
"""Returns True if the patch is empty
"""
def empty_patch(self, name):
"""Returns True if the patch is empty
"""
f.close()
elif oldname in applied:
Patch(oldname, self.__patch_dir, self.__refs_dir).rename(newname)
f.close()
elif oldname in applied:
Patch(oldname, self.__patch_dir, self.__refs_dir).rename(newname)
- if oldname == self.get_current():
- self.__set_current(newname)
applied[applied.index(oldname)] = newname
applied[applied.index(oldname)] = newname