Create a Gitweb::Git module in 'gitweb/lib/Gitweb/Git.pm' to store essential git variables and subs regarding the gitweb.perl script Subroutines moved: evaluate_git_version git_cmd quote_command Subroutines yet to move: (Contains not yet packaged subs & vars) None Update gitweb/Makefile to install gitweb modules alongside gitweb Signed-off-by: Pavan Kumar Sunkara <pavan.sss1991@xxxxxxxxx> --- gitweb/Makefile | 1 + gitweb/gitweb.perl | 35 +++----------------------------- gitweb/lib/Gitweb/Git.pm | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 31 deletions(-) create mode 100644 gitweb/lib/Gitweb/Git.pm diff --git a/gitweb/Makefile b/gitweb/Makefile index 4343396..fcd4042 100644 --- a/gitweb/Makefile +++ b/gitweb/Makefile @@ -115,6 +115,7 @@ GITWEB_FILES += static/git-logo.png static/git-favicon.png GITWEB_LIB_GITWEB += lib/Gitweb/Config.pm GITWEB_LIB_GITWEB += lib/Gitweb/Request.pm GITWEB_LIB_GITWEB += lib/Gitweb/Escape.pm +GITWEB_LIB_GITWEB += lib/Gitweb/Git.pm GITWEB_REPLACE = \ -e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \ diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index e95aaf7..59a65a8 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -24,12 +24,11 @@ sub __DIR__ () { } use lib __DIR__ . "/lib"; +use Gitweb::Git; use Gitweb::Config; use Gitweb::Request; use Gitweb::Escape; -our $number_of_git_cmds = 0; - BEGIN { CGI->compile() if $ENV{'MOD_PERL'}; } @@ -39,9 +38,8 @@ BEGIN { # with their descriptions is listed in Gitweb::Config. $version = "++GIT_VERSION++"; -# core git executable to use -# this can just be "git" if your webserver has a sensible PATH -our $GIT = "++GIT_BINDIR++/git"; +#only this variable has it's root in Gitweb::Git +$GIT = "++GIT_BINDIR++/git"; $projectroot = "++GITWEB_PROJECTROOT++"; $project_maxdepth = "++GITWEB_PROJECT_MAXDEPTH++"; @@ -77,7 +75,6 @@ sub gitweb_get_feature { $feature{$name}{'override'}, @{$feature{$name}{'default'}}); # project specific override is possible only if we have project - our $git_dir; # global variable, declared later if (!$override || !defined $git_dir) { return @defaults; } @@ -197,13 +194,6 @@ sub get_loadavg { return 0; } -# version of the core git binary -our $git_version; -sub evaluate_git_version { - our $git_version = qx("$GIT" --version) =~ m/git version (.*)$/ ? $1 : "unknown"; - $number_of_git_cmds++; -} - sub check_loadavg { if (defined $maxload && get_loadavg() > $maxload) { die_error(503, "The load average on the server is too high"); @@ -492,10 +482,8 @@ sub evaluate_and_validate_params { } } -# path to the current git repository -our $git_dir; sub evaluate_git_dir { - our $git_dir = "$projectroot/$project" if $project; + $git_dir = "$projectroot/$project" if $project; } our (@snapshot_fmts, $git_avatar); @@ -1548,21 +1536,6 @@ sub get_feed_info { ## ---------------------------------------------------------------------- ## git utility subroutines, invoking git commands -# returns path to the core git executable and the --git-dir parameter as list -sub git_cmd { - $number_of_git_cmds++; - return $GIT, '--git-dir='.$git_dir; -} - -# quote the given arguments for passing them to the shell -# quote_command("command", "arg 1", "arg with ' and ! characters") -# => "'command' 'arg 1' 'arg with '\'' and '\!' characters'" -# Try to avoid using this function wherever possible. -sub quote_command { - return join(' ', - map { my $a = $_; $a =~ s/(['!])/'\\$1'/g; "'$a'" } @_ ); -} - # get HEAD ref of given project as hash sub git_get_head_hash { return git_get_full_hash(shift, 'HEAD'); diff --git a/gitweb/lib/Gitweb/Git.pm b/gitweb/lib/Gitweb/Git.pm new file mode 100644 index 0000000..9961e6d --- /dev/null +++ b/gitweb/lib/Gitweb/Git.pm @@ -0,0 +1,48 @@ +#!/usr/bin/perl +# +# Gitweb::Git -- gitweb git package +# +# This program is licensed under the GPLv2 + +package Gitweb::Git; + +use strict; +use warnings; +use Exporter qw(import); + +our @EXPORT = qw($GIT $number_of_git_cmds $git_version $git_dir + git_cmd quote_command evaluate_git_version); + +# core git executable to use +# this can just be "git" if your webserver has a sensible PATH +our $GIT; + +our $number_of_git_cmds = 0; + +# version of the core git binary +our $git_version; + +# path to the current git repository +our $git_dir; + +# returns path to the core git executable and the --git-dir parameter as list +sub git_cmd { + $number_of_git_cmds++; + return $GIT, '--git-dir='.$git_dir; +} + +# quote the given arguments for passing them to the shell +# quote_command("command", "arg 1", "arg with ' and ! characters") +# => "'command' 'arg 1' 'arg with '\'' and '\!' characters'" +# Try to avoid using this function wherever possible. +sub quote_command { + return join(' ', + map { my $a = $_; $a =~ s/(['!])/'\\$1'/g; "'$a'" } @_ ); +} + +sub evaluate_git_version { + $git_version = qx("$GIT" --version) =~ m/git version (.*)$/ ? $1 : "unknown"; + $number_of_git_cmds++; +} + +1; -- 1.7.1.450.g21d56 -- 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