Fix push --undo to remove the local changes
authorCatalin Marinas <catalin.marinas@gmail.com>
Wed, 24 Aug 2005 13:52:43 +0000 (14:52 +0100)
committerCatalin Marinas <catalin.marinas@gmail.com>
Wed, 24 Aug 2005 13:52:43 +0000 (14:52 +0100)
Without this patch, the command would fail if there are local changes
because of git-read-tree -m -u.

Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
stgit/git.py
stgit/stack.py

index fb75a85..5abe902 100644 (file)
@@ -434,6 +434,22 @@ def switch(tree_id):
 
     __set_head(tree_id)
 
+def reset(tree_id = None):
+    """Revert the tree changes relative to the given tree_id. It removes
+    any local changes
+    """
+    if not tree_id:
+        tree_id = get_head()
+
+    cache_files = __tree_status(tree_id = tree_id)
+    rm_files =  [x[1] for x in cache_files if x[0] in ['D']]
+
+    checkout(tree_id = tree_id, force = True)
+    __set_head(tree_id)
+
+    # checkout doesn't remove files
+    map(os.remove, rm_files)
+
 def pull(location, head = None, tag = None):
     """Fetch changes from the remote repository. At the moment, just
     use the 'git fetch' scripts
index 46d6ee5..1e68b99 100644 (file)
@@ -496,6 +496,7 @@ class Series:
         assert(name)
 
         patch = Patch(name, self.__patch_dir)
+        git.reset()
         self.pop_patch(name)
         patch.restore_old_boundaries()