Fix the reset command to set HEAD to a proper id
authorCatalin Marinas <catalin.marinas@gmail.com>
Tue, 28 Feb 2006 21:57:35 +0000 (21:57 +0000)
committerCatalin Marinas <catalin.marinas@gmail.com>
Tue, 28 Feb 2006 21:57:35 +0000 (21:57 +0000)
By default, the git.reset() command was setting the head to the 'HEAD'
value (introduced by commit 15de5ae14f1c76adac52ca5633a679fba79a877c).
This patch fixes it and also adds an assert in the __set_head()
function to detect future bugs.

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

index 016bc3a..a3488ff 100644 (file)
@@ -253,6 +253,9 @@ def __set_head(val):
             raise GitException, 'Could not update HEAD to "%s".' % val
         __head = val
 
+    # only allow SHA1 hashes
+    assert(len(__head) == 40)
+
 def __clear_head_cache():
     """Sets the __head to None so that a re-read is forced
     """
@@ -599,14 +602,17 @@ def switch(tree_id):
 
     __set_head(tree_id)
 
-def reset(files = None, tree_id = 'HEAD'):
+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()
+
     checkout(files, tree_id, True)
 
     # if the reset refers to the whole tree, switch the HEAD as well
-    if tree_id and not files:
+    if not files:
         __set_head(tree_id)
 
 def pull(repository = 'origin', refspec = None):