From 06c9c919707ba4116442ca53ac7cf035540981f2 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 11 Sep 2016 18:30:21 +0200 Subject: fix(Head): checkout() handles detached head It's not optimal, as we can now return one of two types which are only compatible in the most basic ways. However, it is better than before, I presume. Fixes #510 --- git/refs/head.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'git/refs/head.py') diff --git a/git/refs/head.py b/git/refs/head.py index 06207e0a..fe820b10 100644 --- a/git/refs/head.py +++ b/git/refs/head.py @@ -202,6 +202,8 @@ class Head(Reference): :return: The active branch after the checkout operation, usually self unless a new branch has been created. + If there is no active branch, as the HEAD is now detached, the HEAD + reference will be returned instead. :note: By default it is only allowed to checkout heads - everything else @@ -212,7 +214,10 @@ class Head(Reference): kwargs.pop('f') self.repo.git.checkout(self, **kwargs) - return self.repo.active_branch + if self.repo.head.is_detached: + return self.repo.head + else: + return self.repo.active_branch #{ Configruation -- cgit v1.2.3