summaryrefslogtreecommitdiff
path: root/git/refs/head.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/refs/head.py')
-rw-r--r--git/refs/head.py42
1 files changed, 21 insertions, 21 deletions
diff --git a/git/refs/head.py b/git/refs/head.py
index dc44c921..686663ae 100644
--- a/git/refs/head.py
+++ b/git/refs/head.py
@@ -4,76 +4,77 @@ from git.exc import GitCommandError
__all__ = ["HEAD"]
-
+
class HEAD(SymbolicReference):
+
"""Provides additional functionality using the git command"""
__slots__ = tuple()
-
+
_HEAD_NAME = 'HEAD'
_ORIG_HEAD_NAME = 'ORIG_HEAD'
__slots__ = tuple()
-
+
def __init__(self, repo, path=_HEAD_NAME):
if path != self._HEAD_NAME:
raise ValueError("HEAD instance must point to %r, got %r" % (self._HEAD_NAME, path))
super(HEAD, self).__init__(repo, path)
-
+
def orig_head(self):
"""
:return: SymbolicReference pointing at the ORIG_HEAD, which is maintained
to contain the previous value of HEAD"""
return SymbolicReference(self.repo, self._ORIG_HEAD_NAME)
-
- def reset(self, commit='HEAD', index=True, working_tree = False,
- paths=None, **kwargs):
+
+ def reset(self, commit='HEAD', index=True, working_tree=False,
+ paths=None, **kwargs):
"""Reset our HEAD to the given commit optionally synchronizing
the index and working tree. The reference we refer to will be set to
commit as well.
-
+
:param commit:
Commit object, Reference Object or string identifying a revision we
should reset HEAD to.
-
+
:param index:
If True, the index will be set to match the given commit. Otherwise
it will not be touched.
-
+
:param working_tree:
If True, the working tree will be forcefully adjusted to match the given
commit, possibly overwriting uncommitted changes without warning.
If working_tree is True, index must be true as well
-
+
:param paths:
Single path or list of paths relative to the git root directory
that are to be reset. This allows to partially reset individual files.
-
+
:param kwargs:
Additional arguments passed to git-reset.
-
+
: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
-
+
if paths:
add_arg = "--"
# END nicely separate paths from rest
-
+
try:
self.repo.git.reset(mode, commit, add_arg, paths, **kwargs)
except GitCommandError, e:
@@ -82,6 +83,5 @@ class HEAD(SymbolicReference):
if e.status != 1:
raise
# END handle exception
-
+
return self
-