diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2010-10-27 20:18:52 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2010-10-27 20:19:03 +0200 |
commit | 2c0b92e40ece170b59bced0cea752904823e06e7 (patch) | |
tree | 6af0b302cf325b99d3133f52c9087a6ddd7c53c0 /lib/git/refs.py | |
parent | 97ab197140b16027975c7465a5e8786e6cc8fea1 (diff) | |
download | gitpython-2c0b92e40ece170b59bced0cea752904823e06e7.tar.gz |
cmd: improved error handling and debug printing
head.reset: will now handle resets with paths much better, especially in the --mixed case, see http://github.com/Byron/GitPython/issues#issue/2
Diffstat (limited to 'lib/git/refs.py')
-rw-r--r-- | lib/git/refs.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/lib/git/refs.py b/lib/git/refs.py index 03b80690..be6ec5e3 100644 --- a/lib/git/refs.py +++ b/lib/git/refs.py @@ -29,6 +29,7 @@ from gitdb.util import ( hex_to_bin ) +from exc import GitCommandError __all__ = ("SymbolicReference", "Reference", "HEAD", "Head", "TagReference", "RemoteReference", "Tag" ) @@ -646,16 +647,36 @@ class HEAD(SymbolicReference): :return: self""" mode = "--soft" + add_arg = None if index: mode = "--mixed" + # it appears, some git-versions declare mixed and paths deprecated + # see http://github.com/Byron/GitPython/issues#issue/2 + if paths: + mode = None + # END special case + # END handle index + if working_tree: mode = "--hard" if not index: - raise ValueError( "Cannot reset the working tree if the index is not reset as well") + raise ValueError( "Cannot reset the working tree if the index is not reset as well") + # END working tree handling - self.repo.git.reset(mode, commit, paths, **kwargs) + if paths: + add_arg = "--" + # END nicely separate paths from rest + + try: + self.repo.git.reset(mode, commit, add_arg, paths, **kwargs) + except GitCommandError, e: + # git nowadays may use 1 as status to indicate there are still unstaged + # modifications after the reset + if e.status != 1: + raise + # END handle exception return self |