Fix the 'status --reset' for individual files
[stgit] / stgit / git.py
index 2cedeaa..582e803 100644 (file)
@@ -205,7 +205,7 @@ def __tree_status(files = None, tree_id = 'HEAD', unknown = False,
     cache_files += [('C', filename) for filename in conflicts]
 
     # the rest
-    for line in _output_lines(['git-diff-index', '-r', tree_id] + files):
+    for line in _output_lines(['git-diff-index', tree_id] + files):
         fs = tuple(line.rstrip().split(' ',4)[-1].split('\t',1))
         if fs[1] not in conflicts:
             cache_files.append(fs)
@@ -274,7 +274,7 @@ def rev_parse(git_id):
         raise GitException, 'Unknown revision: %s' % git_id
 
 def branch_exists(branch):
-    """Existance check for the named branch
+    """Existence check for the named branch
     """
     for line in _output_lines(['git-rev-parse', '--symbolic', '--all']):
         if line.strip() == branch:
@@ -599,22 +599,14 @@ def switch(tree_id):
 
     __set_head(tree_id)
 
-def reset(files = None, tree_id = None):
+def reset(files = None, tree_id = 'HEAD'):
     """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(files, tree_id)
-    rm_files =  [x[1] for x in cache_files if x[0] in ['D']]
-
     checkout(files, tree_id, True)
-    # checkout doesn't remove files
-    map(os.remove, rm_files)
 
     # if the reset refers to the whole tree, switch the HEAD as well
-    if not files:
+    if tree_id and not files:
         __set_head(tree_id)
 
 def pull(repository = 'origin', refspec = None):