From: Junio C Hamano Date: Fri, 14 Nov 2008 06:40:38 GMT Subject: Re: [PATCH v2 09/11] gitweb: git_is_head_detached() function Message-ID: <7vk5b6dd3t.fsf@gitster.siamese.dyndns.org> In-Reply-To: <1226616555-24503-10-git-send-email-giuseppe.bilotta@gmail.com> Giuseppe Bilotta writes: > The function checks if the HEAD for the current project is detached by > checking if 'git branch' returns "* (no branch)" This one looks more like "oops, the way detached HEAD is detected in 08 is sucky, let's cover it up by introducing a function as an afterthought." Have a patch that introduces git_is_head_detached() first, and then use that function to implement the feature. I personally think the user (that is, 08/11) is small and isolated enough that these two can be a single patch. > +# check if current HEAD is detached > +sub git_is_head_detached { > + my @x = (git_cmd(), 'branch'); > + my @ret = split("\n", qx(@x)); > + return 0 + grep { /^\* \(no branch\)$/ } @ret; > +} Do not read from Porcelain in scripts. "git symbolic-ref HEAD" should error out when your HEAD is detached, and will return refs/heads/frotz when you are on frotz branch. But realistically speaking, what does it mean to have a detached HEAD in a repository published via gitweb? First of all these things are supposed to be bare and there would be no checkout.