From: Catalin Marinas Date: Tue, 28 Feb 2006 21:57:35 +0000 (+0000) Subject: Fix the reset command to set HEAD to a proper id X-Git-Tag: v0.14.3~537 X-Git-Url: https://git.distorted.org.uk/~mdw/stgit/commitdiff_plain/510d1442b1fcabe006fcf322837980d23eaeb9c7 Fix the reset command to set HEAD to a proper id 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 --- diff --git a/stgit/git.py b/stgit/git.py index 016bc3a..a3488ff 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -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):