This takes care of the old-infrastructure commands as well. They'll all be converted to the new infrastructure eventually, but until then this patch is necessary to make all the commands behave consistently. Signed-off-by: Karl Hasselström <kha@xxxxxxxxxxx> --- stgit/lib/log.py | 29 ++++++++++++++++++++++++++++- stgit/lib/stack.py | 7 +++++++ 2 files changed, 35 insertions(+), 1 deletions(-) diff --git a/stgit/lib/log.py b/stgit/lib/log.py index fac050f..9904941 100644 --- a/stgit/lib/log.py +++ b/stgit/lib/log.py @@ -58,10 +58,37 @@ def log_entry(stack, msg): + [ll.full_log for ll in last_log]))) stack.repository.refs.set(ref, full_log, msg) +class Fakestack(object): + """Imitates a real Stack, but with the topmost patch popped.""" + def __init__(self, stack): + appl = list(stack.patchorder.applied) + unappl = list(stack.patchorder.unapplied) + class patchorder(object): + applied = appl[:-1] + unapplied = [appl[-1]] + unappl + all = appl + unappl + self.patchorder = patchorder + class patches(object): + @staticmethod + def get(pn): + if pn == appl[-1]: + class patch(object): + commit = stack.patches.get(pn).old_commit + return patch + else: + return stack.patches.get(pn) + self.patches = patches + self.head = stack.head.data.parent + self.name = stack.name + self.repository = stack.repository def compat_log_entry(msg): repo = default_repo() stack = repo.get_stack(repo.current_branch) - log_entry(stack, msg) + if repo.default_index.conflicts(): + log_entry(Fakestack(stack), msg) + log_entry(stack, msg + ' (CONFLICT)') + else: + log_entry(stack, msg) class Log(object): """Read a log entry.""" diff --git a/stgit/lib/stack.py b/stgit/lib/stack.py index af1c994..95b817f 100644 --- a/stgit/lib/stack.py +++ b/stgit/lib/stack.py @@ -17,6 +17,13 @@ class Patch(object): def commit(self): return self.__stack.repository.refs.get(self.__ref) @property + def old_commit(self): + """Return the previous commit for this patch.""" + fn = os.path.join(self.__compat_dir, 'top.old') + if not os.path.isfile(fn): + return None + return self.__stack.repository.get_commit(utils.read_string(fn)) + @property def __compat_dir(self): return os.path.join(self.__stack.directory, 'patches', self.__name) def __write_compat_files(self, new_commit, msg): -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html