From: Jakub Narebski <jnareb@gmail.com>
To: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Cc: git@vger.kernel.org, Petr Baudis <pasky@suse.cz>,
Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH v2 09/11] gitweb: git_is_head_detached() function
Date: Sun, 16 Nov 2008 00:43:45 +0100 [thread overview]
Message-ID: <200811160043.46017.jnareb@gmail.com> (raw)
In-Reply-To: <1226616555-24503-10-git-send-email-giuseppe.bilotta@gmail.com>
On Thu, 13 Nov 2008, Giuseppe Bilotta wrote:
> The function checks if the HEAD for the current project is detached by
> checking if 'git branch' returns "* (no branch)"
>
> Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
In my opinion this patch should really be squashed together with
previous one. They belong together.
> ---
> gitweb/gitweb.perl | 13 +++++++++----
> 1 files changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index a168f6f..ceb0271 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -1844,6 +1844,13 @@ sub git_get_head_hash {
> return $retval;
> }
>
> +# 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;
> +}
First, not git-branch. Second, you can use Perl-only solution:
+# check if current HEAD is detached
+sub git_is_head_detached {
+ my $head_file = "$project/HEAD";
+ return if -l $head_file; # symlink
+ open my $fd, '<', $head_file
+ or return;
+ my $head_hash = <$fd>;
+ close $fd;
+ return if $head_hash =~ /^ref: /;
+ return $head_hash;
+}
Alternate solution would be to create git_get_symbolic_ref, and use
"!defined $current_branch" in place of "git_is_head_detached()".
> +
> # get type of given object
> sub git_get_type {
> my $hash = shift;
> @@ -2673,11 +2680,9 @@ sub git_get_heads_list {
> my @headslist;
>
> if (grep { $_ eq 'heads' } @class) {
> - my @x = (git_cmd(), 'branch');
> - my @ret = split("\n", qx(@x));
> - if (grep { /^\* \(no branch\)$/ } @ret) { ;
> + if (git_is_head_detached()) {
> my %ref_item;
> - @x = (git_cmd(), 'log', '-1', '--pretty=format:%H%n%ct%n%s');
> + my @x = (git_cmd(), 'log', '-1', '--pretty=format:%H%n%ct%n%s');
Hmmm... git-log, git-show, or perhaps parse_commit?
> my ($hash, $epoch, $title) = split("\n", qx(@x), 3);
>
> $ref_item{'class'} = 'head';
> --
> 1.5.6.5
>
>
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2008-11-15 23:45 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-13 22:49 [PATCH v2 00/11] gitweb: display remote heads Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 01/11] gitweb: introduce remote_heads feature Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 02/11] gitweb: git_get_heads_list accepts an optional list of refs Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 03/11] gitweb: separate heads and remotes list in summary view Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 04/11] gitweb: optional custom name for refs in git_heads_body Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 05/11] gitweb: git_split_heads_body function Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 06/11] gitweb: use CSS to style split head lists Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 07/11] gitweb: add 'remotes' action Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 08/11] gitweb: display HEAD in heads list when detached Giuseppe Bilotta
2008-11-13 22:49 ` [PATCH v2 09/11] gitweb: git_is_head_detached() function Giuseppe Bilotta
2008-11-13 23:54 ` [PATCH v2 10/11] gitweb: add HEAD to list of shortlog refs if detached Giuseppe Bilotta
2008-11-13 23:54 ` [PATCH v2 11/11] gitweb: CSS style and refs mark for detached HEAD Giuseppe Bilotta
2008-11-16 0:08 ` Jakub Narebski
2008-11-15 23:59 ` [PATCH v2 10/11] gitweb: add HEAD to list of shortlog refs if detached Jakub Narebski
2008-11-14 6:40 ` [PATCH v2 09/11] gitweb: git_is_head_detached() function Junio C Hamano
2008-11-14 8:52 ` Giuseppe Bilotta
2008-11-14 17:44 ` Junio C Hamano
2008-11-14 21:17 ` Nanako Shiraishi
2008-11-15 23:43 ` Jakub Narebski [this message]
2008-11-15 22:31 ` [PATCH v2 08/11] gitweb: display HEAD in heads list when detached Jakub Narebski
2008-11-15 12:16 ` [PATCH v2 07/11] gitweb: add 'remotes' action Jakub Narebski
2008-11-15 12:32 ` Giuseppe Bilotta
2008-11-16 0:29 ` Jakub Narebski
2008-11-16 2:47 ` Giuseppe Bilotta
2008-11-15 0:20 ` [PATCH v2 06/11] gitweb: use CSS to style split head lists Jakub Narebski
2008-11-14 23:59 ` [PATCH v2 05/11] gitweb: git_split_heads_body function Jakub Narebski
2008-11-15 10:04 ` Giuseppe Bilotta
2008-11-16 1:13 ` Jakub Narebski
2008-11-16 2:53 ` Giuseppe Bilotta
2008-11-15 12:14 ` Junio C Hamano
2008-11-15 12:25 ` Giuseppe Bilotta
2008-11-16 12:12 ` Jakub Narebski
2008-11-16 12:26 ` Giuseppe Bilotta
2008-11-16 14:21 ` Jakub Narebski
2008-11-16 15:28 ` Giuseppe Bilotta
2008-11-14 23:32 ` [PATCH v2 04/11] gitweb: optional custom name for refs in git_heads_body Jakub Narebski
2008-11-15 10:11 ` Giuseppe Bilotta
2008-11-14 20:04 ` [PATCH v2 03/11] gitweb: separate heads and remotes list in summary view Jakub Narebski
2008-11-14 22:01 ` Giuseppe Bilotta
2008-11-14 18:48 ` [PATCH v2 02/11] gitweb: git_get_heads_list accepts an optional list of refs Jakub Narebski
2008-11-14 21:52 ` Giuseppe Bilotta
2008-11-14 18:15 ` [PATCH v2 01/11] gitweb: introduce remote_heads feature Jakub Narebski
2008-11-14 21:44 ` Giuseppe Bilotta
2008-11-14 14:33 ` [PATCH v2 00/11] gitweb: display remote heads Jakub Narebski
2008-11-14 15:25 ` Sverre Rabbelier
2008-11-14 18:37 ` Giuseppe Bilotta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200811160043.46017.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=giuseppe.bilotta@gmail.com \
--cc=pasky@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.