summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
3888eb9)
It is useful to be able to only reset some files. This patch allows this.
Signed-off-by: Catalin Marinas <catalin.marinas@gmail.com>
"""Show the tree status
"""
if options.reset:
"""Show the tree status
"""
if options.reset:
- resolved_all()
- git.reset()
+ if args:
+ for f in args:
+ resolved(f)
+ git.reset(args)
+ else:
+ resolved_all()
+ git.reset()
else:
git.status(args, options.modified, options.new, options.deleted,
options.conflict, options.unknown, options.noexclude)
else:
git.status(args, options.modified, options.new, options.deleted,
options.conflict, options.unknown, options.noexclude)
-def reset(tree_id = None):
+def reset(files = None, 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()
"""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)
+ cache_files = __tree_status(files, tree_id)
rm_files = [x[1] for x in cache_files if x[0] in ['D']]
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(files, tree_id, True)
# checkout doesn't remove files
map(os.remove, rm_files)
# 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:
+ __set_head(tree_id)
+
def pull(repository = 'origin', refspec = None):
"""Pull changes from the remote repository. At the moment, just
use the 'git pull' command
def pull(repository = 'origin', refspec = None):
"""Pull changes from the remote repository. At the moment, just
use the 'git pull' command