From e71d766bdfa12433d48a2c62273d573dd87aacce Mon Sep 17 00:00:00 2001 From: =?utf8?q?Karl=20Hasselstr=C3=B6m?= Date: Wed, 9 May 2007 01:32:46 +0200 Subject: [PATCH] Fix popping on non-active branches MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Resetting HEAD on the current branch when popping a patch on another branch isn't a great idea. Signed-off-by: Karl Hasselström --- stgit/git.py | 8 ++++++-- stgit/stack.py | 13 +++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/stgit/git.py b/stgit/git.py index d7eb48e1..837f927e 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -298,14 +298,18 @@ def set_head_file(ref): [os.path.join('refs', 'heads', ref)]) != 0: raise GitException, 'Could not set head to "%s"' % ref +def set_branch(branch, val): + """Point branch at a new commit object.""" + if __run('git-update-ref', [branch, val]) != 0: + raise GitException, 'Could not update %s to "%s".' % (branch, val) + def __set_head(val): """Sets the HEAD value """ global __head if not __head or __head != val: - if __run('git-update-ref HEAD', [val]) != 0: - raise GitException, 'Could not update HEAD to "%s".' % val + set_branch('HEAD', val) __head = val # only allow SHA1 hashes diff --git a/stgit/stack.py b/stgit/stack.py index 8292b105..52f39a63 100644 --- a/stgit/stack.py +++ b/stgit/stack.py @@ -1071,12 +1071,13 @@ class Series(StgitObject): patch = Patch(name, self.__patch_dir, self.__refs_dir) - # only keep the local changes - if keep and not git.apply_diff(git.get_head(), patch.get_bottom()): - raise StackException, \ - 'Failed to pop patches while preserving the local changes' - - git.switch(patch.get_bottom(), keep) + if git.get_head_file() == self.get_branch(): + if keep and not git.apply_diff(git.get_head(), patch.get_bottom()): + raise StackException( + 'Failed to pop patches while preserving the local changes') + git.switch(patch.get_bottom(), keep) + else: + git.set_branch(self.get_branch(), patch.get_bottom()) # save the new applied list idx = applied.index(name) + 1 -- 2.11.4.GIT