• J
    gitweb: Use git-for-each-ref to generate list of heads and/or tags · cd146408
    Jakub Narebski 提交于
    Add two subroutines: git_get_heads_list and git_get_refs_list, which
    fill out needed parts of refs info (heads and tags respectively) info
    using single call to git-for-each-ref, instead of using
    git-peek-remote to get list of references and using parse_ref for each
    ref to get ref info, which in turn uses at least one call of git
    command.
    
    Replace call to git_get_refs_list in git_summary by call to
    git_get_references, git_get_heads_list and git_get_tags_list
    (simplifying this subroutine a bit). Use git_get_heads_list in
    git_heads and git_get_tags_list in git_tags. Modify git_tags_body
    slightly to accept output from git_get_tags_list.
    
    Remove no longer used, and a bit hackish, git_get_refs_list.
    parse_ref is no longer used, but is left for now.
    
    Generating "summary" and "tags" views should be much faster for
    projects which have large number of tags.
    
    CHANGES IN OUTPUT: Before, if ref in refs/tags was tag pointing to
    commit we used committer epoch as epoch for ref, and used tagger epoch
    as epoch only for tag pointing to object of other type. If ref in
    refs/tags was commit, we used committer epoch as epoch for ref (see
    parse_ref; we sorted in gitweb by 'epoch' field).
    
    Currently we use committer epoch for refs pointing to commit objects,
    and tagger epoch for refs pointing to tag object, even if tag points
    to commit.
    
    Simple ab benchmark before and after this patch for my git.git
    repository (git/jnareb-git.git) with some heads and tags added
    as compared to git.git repository, shows around 2.4-3.0 times speedup
    for "summary" and "tags" views:
    
     summary   3134 +/- 24.2 ms  -->   1081 +/- 30.2 ms
     tags      2886 +/- 18.9 ms  -->   1196 +/- 15.6 ms
    Signed-off-by: NJakub Narebski <jnareb@gmail.com>
    Signed-off-by: NJunio C Hamano <junkio@cox.net>
    cd146408
gitweb.perl 114.2 KB