Gitweb has problems if HEAD points to an unborn branch, with no commits on it yet, but there are other branches present (so it is not newly initialized repository). This can happen if non-bare repository (with default 'master' branch) is updated not via committing but by other means like push to it, or Gerrit. It can happen also just after running "git checkout --orphan <new branch>" but before creating any new commit on this branch. This commit adds test and fixes the issue of being on unborn branch (of HEAD not pointing to a commit) in "heads" view, and also in "summary" view -- which includes "heads" excerpt as subview. While at it rename local variable $head to $head_at, as it points to current commit rather than current branch name (HEAD contents). Includes simple test for 'summary' view and being on unborn branch. Reported-by: rajesh boyapati <boyapatisrajesh@xxxxxxxxx> Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> --- This patch first appeared on git mailing list in "Fwd: Git-web error" as [PATCH] gitweb: Deal with HEAD pointing to unborn branch in "heads" view Message-Id: <201202032233.05324.jnareb@xxxxxxxxx> http://article.gmane.org/gmane.comp.version-control.git/189805 The $head -> $head_at change is not really necessary, but while we are changing that area of code I felt it would be good to make it better. What we should do in the future is rework git_heads_body to work with symbolic references rather than mark branches that point to the same commit as HEAD does. That would also help in the "detached HEAD" case... gitweb/gitweb.perl | 4 ++-- t/t9500-gitweb-standalone-no-errors.sh | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index 87a95e2..0fdca5b 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -5633,7 +5633,7 @@ sub git_tags_body { sub git_heads_body { # uses global variable $project - my ($headlist, $head, $from, $to, $extra) = @_; + my ($headlist, $head_at, $from, $to, $extra) = @_; $from = 0 unless defined $from; $to = $#{$headlist} if (!defined $to || $#{$headlist} < $to); @@ -5642,7 +5642,7 @@ sub git_heads_body { for (my $i = $from; $i <= $to; $i++) { my $entry = $headlist->[$i]; my %ref = %$entry; - my $curr = $ref{'id'} eq $head; + my $curr = defined $head_at && $ref{'id'} eq $head_at; if ($alternate) { print "<tr class=\"dark\">\n"; } else { diff --git a/t/t9500-gitweb-standalone-no-errors.sh b/t/t9500-gitweb-standalone-no-errors.sh index 0f771c6..81246a6 100755 --- a/t/t9500-gitweb-standalone-no-errors.sh +++ b/t/t9500-gitweb-standalone-no-errors.sh @@ -739,4 +739,13 @@ test_expect_success \ 'echo "\$projects_list_group_categories = 1;" >>gitweb_config.perl && gitweb_run' +# ---------------------------------------------------------------------- +# unborn branches + +test_expect_success \ + 'unborn HEAD: "summary" page (with "heads" subview)' \ + 'git checkout orphan_branch || git checkout --orphan orphan_branch && + test_when_finished "git checkout master" && + gitweb_run "p=.git;a=summary"' + test_done -- 1.7.9 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html