git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/7] gitweb: Use @hist_opts as git-rev-list parameters in git_history

From
Jakub Narebski <jnareb@gmail.com>
Date
Sep 6, 2006, 13:08 UTC
Message-ID
<11575480922090-git-send-email-jnareb@gmail.com>
In-Reply-To
<11575480912922-git-send-email-jnareb@gmail.com>

Add new global configuration variable @hist_opts, which holds additional, history specific options (parameters) to git-rev-list called in git_history subroutine. Default value is '--full-history', as it was.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
 gitweb/gitweb.perl |   18 ++++++++++++++++--
 1 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 4c76032..2191853 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -176,9 +176,23 @@ # - more costly is '-C' (or '-C', '-M'),
 #   (number of changed files + number of removed files) * (number of new files)
 # - even more costly is '-C', '--find-copies-harder' with cost
 #   (number of files in the original tree) * (number of new files)
-# - one might want to include '-B' option, e.g. '-B', '-M'
+# - one might want to include '-B' option, e.g. have it ('-B', '-M'),
+#   or for example '-l<num>' together with '-M' and perhaps '-C'
 our @diff_opts = ('-M'); # taken from git_commit
 
+# options fo git-rev-list used in git_history
+# - default is '--full-history', which is slowest but works with merges,
+#   and was done to not change the output from previous version when
+#   path limiting was done by piping revisions to git-diff-tree --stdin
+# - less costly is (), i.e. without '--full-history', which of course
+#   changes output and provides _simplified_ history of a file
+# - for files which appeared late in the history less costly is
+#   --full-history, --remove-empty, although it changes output in
+#   the rare case when name vanished the appeared thorough the history;
+#   it improves performance of course only the last page of history
+# - least costly, but changing output, is having --remove-mepty only
+our @hist_opts = ('--full-history');
+
 our $GITWEB_CONFIG = $ENV{'GITWEB_CONFIG'} || "++GITWEB_CONFIG++";
 do $GITWEB_CONFIG if -e $GITWEB_CONFIG;
 
@@ -3137,7 +3151,7 @@ sub git_history {
 	}
 
 	open my $fd, "-|",
-		git_cmd(), "rev-list", $limit, "--full-history", $hash_base, "--", $file_name
+		git_cmd(), "rev-list", $limit, @hist_opts, $hash_base, "--", $file_name
 			or die_error(undef, "Open git-rev-list-failed");
 	my @revlist = map { chomp; $_ } <$fd>;
 	close $fd
-- 
1.4.2
Previous: Jakub NarebskiNext: Jakub Narebski
Message 4 of 28 in “gitweb: Trying to improve history view speed”
  1. 0/7 gitweb: Trying to improve history view speedJakub Narebski, Sep 6, 2006
  2. 1/7 gitweb: Make pickaxe search a featureJakub Narebski, Sep 6, 2006
  3. 2/7 gitweb: Paginate history outputJakub Narebski, Sep 6, 2006
  4. 3/7 gitweb: Use @hist_opts as git-rev-list parameters in git_historyJakub Narebski, Sep 6, 2006
  5. 4/7 gitweb: Add parse_rev_list for later useJakub Narebski, Sep 6, 2006
  6. 5/7 gitweb: Use parse_rev_list in git_shortlog and git_historyJakub Narebski, Sep 6, 2006
  7. 6/7 gitweb: Assume parsed revision list in git_shortlog_body and git_history_bodyJakub Narebski, Sep 6, 2006
  8. 7/7 gitweb: Set page to 0 if it is not defined, in git_historyJakub Narebski, Sep 6, 2006
  9. 8/8 gitweb: Remove --parents from call to git-rev-list in parse_rev_listJakub Narebski, Sep 6, 2006
  10. Linus TorvaldsSep 6, 2006
  11. Jakub NarebskiSep 6, 2006
  12. Junio C HamanoSep 6, 2006
  13. Jakub NarebskiSep 6, 2006
  14. Jakub NarebskiSep 7, 2006
  15. Junio C HamanoSep 7, 2006
  16. Jakub NarebskiSep 7, 2006
  17. Junio C HamanoSep 7, 2006
  18. Jakub NarebskiSep 7, 2006
  19. Linus TorvaldsSep 6, 2006
  20. Jakub NarebskiSep 6, 2006
  21. Linus TorvaldsSep 6, 2006
  22. Jakub NarebskiSep 6, 2006
  23. Linus TorvaldsSep 6, 2006
  24. Junio C HamanoSep 6, 2006
  25. Jakub NarebskiSep 9, 2006
  26. Junio C HamanoSep 9, 2006
  27. Jakub NarebskiSep 9, 2006
  28. Junio C HamanoSep 9, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.