X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/stgit/blobdiff_plain/ca66756b4a6db44d87296263c75802619496d1ce..91413512c5afe7c69aabf4367a9ff8ed1df21efb:/stgit/git.py diff --git a/stgit/git.py b/stgit/git.py index 6744be0..4cc35c9 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -366,13 +366,20 @@ def create_branch(new_branch, tree_id = None): if branch_exists(new_branch): raise GitException, 'Branch "%s" already exists' % new_branch + current_head_file = get_head_file() current_head = get_head() set_head_file(new_branch) __set_head(current_head) # a checkout isn't needed if new branch points to the current head if tree_id: - switch(tree_id) + try: + switch(tree_id) + except GitException: + # Tree switching failed. Revert the head file + set_head_file(current_head_file) + delete_branch(new_branch) + raise if os.path.isfile(os.path.join(basedir.get(), 'MERGE_HEAD')): os.remove(os.path.join(basedir.get(), 'MERGE_HEAD'))