git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb structure
@ 2010-05-22 10:11 Pavan Kumar Sunkara
  2010-05-22 15:57 ` Jakub Narebski
  0 siblings, 1 reply; 6+ messages in thread
From: Pavan Kumar Sunkara @ 2010-05-22 10:11 UTC (permalink / raw
  To: git, jnareb, normalperson, chriscool, pasky; +Cc: Pavan Kumar Sunkara

git-instaweb in its current form (re)creates gitweb.cgi and
(some of) required static files in $GIT_DIR/gitweb/ directory.
Splitting gitweb would make it difficult for git-instaweb to
continue with this method.

Use the instaweb.gitwebdir config variable to point git-instaweb script
to a global directory which contains gitweb files as server root
and the httpd.conf along with server logs and pid go into
'$(GIT_DIR)/gitweb' directory.

Signed-off-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
---

This patch is based on commit 'jn/gitweb-install' in the next branch.

 Makefile        |   10 +------
 git-instaweb.sh |   71 ++++++++++++++++++++----------------------------------
 2 files changed, 28 insertions(+), 53 deletions(-)

diff --git a/Makefile b/Makefile
index caf2f64..91cd726 100644
--- a/Makefile
+++ b/Makefile
@@ -1592,15 +1592,8 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/
 	sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
 	    -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
 	    -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
-	    -e '/@@GITWEB_CGI@@/r gitweb/gitweb.cgi' \
-	    -e '/@@GITWEB_CGI@@/d' \
-	    -e '/@@GITWEB_CSS@@/r $(GITWEB_CSS)' \
-	    -e '/@@GITWEB_CSS@@/d' \
-	    -e '/@@GITWEB_JS@@/r $(GITWEB_JS)' \
-	    -e '/@@GITWEB_JS@@/d' \
+	    -e 's|@@GITWEBDIR@@|$(gitwebdir)|g' \
 	    -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
-            -e 's|@@GITWEB_CSS_NAME@@|$(GITWEB_CSS)|' \
-            -e 's|@@GITWEB_JS_NAME@@|$(GITWEB_JS)|' \
 	    $@.sh > $@+ && \
 	chmod +x $@+ && \
 	mv $@+ $@
@@ -1972,6 +1965,7 @@ install: all
 	$(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
 ifndef NO_PERL
 	$(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
+	$(MAKE) -C gitweb gitwebdir=$(gitwebdir) install
 endif
 ifndef NO_PYTHON
 	$(MAKE) -C git_remote_helpers prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
diff --git a/git-instaweb.sh b/git-instaweb.sh
index f608014..b3e9192 100755
--- a/git-instaweb.sh
+++ b/git-instaweb.sh
@@ -24,6 +24,7 @@ restart        restart the web server
 fqgitdir="$GIT_DIR"
 local="$(git config --bool --get instaweb.local)"
 httpd="$(git config --get instaweb.httpd)"
+root="$(git config --get instaweb.gitwebdir)"
 port=$(git config --get instaweb.port)
 module_path="$(git config --get instaweb.modulepath)"
 
@@ -34,6 +35,9 @@ conf="$GIT_DIR/gitweb/httpd.conf"
 # if installed, it doesn't need further configuration (module_path)
 test -z "$httpd" && httpd='lighttpd -f'
 
+# Default is @@GITWEBDIR@@
+test -z "$root" && root='@@GITWEBDIR@@'
+
 # any untaken local port will do...
 test -z "$port" && port=1234
 
@@ -57,7 +61,7 @@ resolve_full_httpd () {
 		# these days and those are not in most users $PATHs
 		# in addition, we may have generated a server script
 		# in $fqgitdir/gitweb.
-		for i in /usr/local/sbin /usr/sbin "$fqgitdir/gitweb"
+		for i in /usr/local/sbin /usr/sbin "$root" "$fqgitdir/gitweb"
 		do
 			if test -x "$i/$httpd_only"
 			then
@@ -159,8 +163,8 @@ done
 mkdir -p "$GIT_DIR/gitweb/tmp"
 GIT_EXEC_PATH="$(git --exec-path)"
 GIT_DIR="$fqgitdir"
-export GIT_EXEC_PATH GIT_DIR
-
+GITWEB_CONFIG="$fqgitdir/gitweb/gitweb_config.perl"
+export GIT_EXEC_PATH GIT_DIR GITWEB_CONFIG
 
 webrick_conf () {
 	# generate a standalone server script in $fqgitdir/gitweb.
@@ -192,7 +196,7 @@ EOF
 
 	cat >"$conf" <<EOF
 :Port: $port
-:DocumentRoot: "$fqgitdir/gitweb"
+:DocumentRoot: "$root"
 :DirectoryIndex: ["gitweb.cgi"]
 :PidFile: "$fqgitdir/pid"
 EOF
@@ -201,7 +205,7 @@ EOF
 
 lighttpd_conf () {
 	cat > "$conf" <<EOF
-server.document-root = "$fqgitdir/gitweb"
+server.document-root = "$root"
 server.port = $port
 server.modules = ( "mod_setenv", "mod_cgi" )
 server.indexfiles = ( "gitweb.cgi" )
@@ -212,7 +216,7 @@ server.errorlog = "$fqgitdir/gitweb/error.log"
 # variable above and uncomment this
 #accesslog.filename = "$fqgitdir/gitweb/access.log"
 
-setenv.add-environment = ( "PATH" => env.PATH )
+setenv.add-environment = ( "PATH" => env.PATH, "GITWEB_CONFIG" => env.GITWEB_CONFIG )
 
 cgi.assign = ( ".cgi" => "" )
 
@@ -277,14 +281,15 @@ EOF
 
 apache2_conf () {
 	test -z "$module_path" && module_path=/usr/lib/apache2/modules
-	mkdir -p "$GIT_DIR/gitweb/logs"
 	bind=
 	test x"$local" = xtrue && bind='127.0.0.1:'
 	echo 'text/css css' > "$fqgitdir/mime.types"
 	cat > "$conf" <<EOF
 ServerName "git-instaweb"
-ServerRoot "$fqgitdir/gitweb"
-DocumentRoot "$fqgitdir/gitweb"
+ServerRoot "$root"
+DocumentRoot "$root"
+ErrorLog "$fqgitdir/gitweb/error.log"
+CustomLog "$fqgitdir/gitweb/access.log" combined
 PidFile "$fqgitdir/pid"
 Listen $bind$port
 EOF
@@ -303,13 +308,14 @@ EOF
 	# check to see if Dennis Stosberg's mod_perl compatibility patch
 	# (<20060621130708.Gcbc6e5c@leonov.stosberg.net>) has been applied
 	if test -f "$module_path/mod_perl.so" &&
-	   sane_grep 'MOD_PERL' "$GIT_DIR/gitweb/gitweb.cgi" >/dev/null
+	   sane_grep 'MOD_PERL' "$root/gitweb.cgi" >/dev/null
 	then
 		# favor mod_perl if available
 		cat >> "$conf" <<EOF
 LoadModule perl_module $module_path/mod_perl.so
 PerlPassEnv GIT_DIR
 PerlPassEnv GIT_EXEC_DIR
+PerlPassEnv GITWEB_CONFIG
 <Location /gitweb.cgi>
 	SetHandler perl-script
 	PerlResponseHandler ModPerl::Registry
@@ -353,7 +359,7 @@ mongoose_conf() {
 # For detailed description of every option, visit
 # http://code.google.com/p/mongoose/wiki/MongooseManual
 
-root		$fqgitdir/gitweb
+root		$root
 ports		$port
 index_files	gitweb.cgi
 #ssl_cert	$fqgitdir/gitweb/ssl_cert.pem
@@ -361,7 +367,7 @@ error_log	$fqgitdir/gitweb/error.log
 access_log	$fqgitdir/gitweb/access.log
 
 #cgi setup
-cgi_env		PATH=$PATH,GIT_DIR=$GIT_DIR,GIT_EXEC_PATH=$GIT_EXEC_PATH
+cgi_env		PATH=$PATH,GIT_DIR=$GIT_DIR,GIT_EXEC_PATH=$GIT_EXEC_PATH,GITWEB_CONFIG=$GITWEB_CONFIG
 cgi_interp	$PERL
 cgi_ext		cgi,pl
 
@@ -370,41 +376,16 @@ mime_types	.gz=application/x-gzip,.tar.gz=application/x-tgz,.tgz=application/x-t
 EOF
 }
 
-
-script='
-s#^(my|our) \$projectroot =.*#$1 \$projectroot = "'$(dirname "$fqgitdir")'";#;
-s#(my|our) \$gitbin =.*#$1 \$gitbin = "'$GIT_EXEC_PATH'";#;
-s#(my|our) \$projects_list =.*#$1 \$projects_list = \$projectroot;#;
-s#(my|our) \$git_temp =.*#$1 \$git_temp = "'$fqgitdir/gitweb/tmp'";#;'
-
-gitweb_cgi () {
-	cat > "$1.tmp" <<\EOFGITWEB
-@@GITWEB_CGI@@
-EOFGITWEB
-	# Use the configured full path to perl to match the generated
-	# scripts' 'hashpling' line
-	"$PERL" -p -e "$script" "$1.tmp"  > "$1"
-	chmod +x "$1"
-	rm -f "$1.tmp"
-}
-
-gitweb_css () {
-	cat > "$1" <<\EOFGITWEB
-@@GITWEB_CSS@@
-
-EOFGITWEB
-}
-
-gitweb_js () {
-	cat > "$1" <<\EOFGITWEB
-@@GITWEB_JS@@
-
-EOFGITWEB
+gitweb_conf() {
+	cat > "$fqgitdir/gitweb/gitweb_config.perl" <<EOF
+#!/usr/bin/perl
+our \$projectroot = "$(dirname "$fqgitdir")";
+our \$git_temp = "$fqgitdir/gitweb/tmp";
+our \$projects_list = \$projectroot;
+EOF
 }
 
-gitweb_cgi "$GIT_DIR/gitweb/gitweb.cgi"
-gitweb_css "$GIT_DIR/@@GITWEB_CSS_NAME@@"
-gitweb_js  "$GIT_DIR/@@GITWEB_JS_NAME@@"
+gitweb_conf
 
 case "$httpd" in
 *lighttpd*)
-- 
1.7.1.18.g74211d.dirty

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb structure
  2010-05-22 10:11 [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb structure Pavan Kumar Sunkara
@ 2010-05-22 15:57 ` Jakub Narebski
  2010-05-22 16:57   ` Pavan Kumar Sunkara
  0 siblings, 1 reply; 6+ messages in thread
From: Jakub Narebski @ 2010-05-22 15:57 UTC (permalink / raw
  To: Pavan Kumar Sunkara; +Cc: git, Eric Wong, Christian Couder, Petr Baudis

On Sat, 22 May 2010, Pavan Kumar Sunkara wrote:

> git-instaweb in its current form (re)creates gitweb.cgi and
> (some of) required static files in $GIT_DIR/gitweb/ directory.
> Splitting gitweb would make it difficult for git-instaweb to
> continue with this method.
> 
> Use the instaweb.gitwebdir config variable to point git-instaweb script
> to a global directory which contains gitweb files as server root
> and the httpd.conf along with server logs and pid go into
> '$(GIT_DIR)/gitweb' directory.

That's not all this patch changes, isn't it?

  While at it, change apache2 configuration to use the same access log
  and error log files as the rest of web servers supported by
  git-instaweb.

While it would be better to have it as a separate commit, I think it
doesn't matter much, and having it in this patch is acceptable as
"while at it" change.

> 
> Signed-off-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>

I like this change, because it simplifies greatly git-instaweb
generation; besides the fact that it is necessary for future splitting
gitweb for better maintability, and for write functionality for gitweb.


Acked-by: Jakub Narebski <jnareb@gmail.com>

_If_ there is no problem with $(gitwebdir) and not $(gitwebdir_SQ),
see below for details.

> ---
> 
> This patch is based on commit 'jn/gitweb-install' in the next branch.

I think it is based on your earlier patches:

* gitweb: Move static files into seperate subdirectory
  http://article.gmane.org/gmane.comp.version-control.git/147321 
* gitweb: Set default destination directory for installing gitweb in Makefile
  http://article.gmane.org/gmane.comp.version-control.git/147160

Those are necessary for this patch to be applied.  Well, the second is
necessary for it to make sense...


BTW. which web servers supported by git-instaweb: lighttpd, apache2,
webrick, mongoose you have tested your change with?

>  Makefile        |   10 +------
>  git-instaweb.sh |   71 ++++++++++++++++++++----------------------------------
>  2 files changed, 28 insertions(+), 53 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index caf2f64..91cd726 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1592,15 +1592,8 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/
>  	sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
[...]
> +	    -e 's|@@GITWEBDIR@@|$(gitwebdir)|g' \
>  	    -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
> -            -e 's|@@GITWEB_CSS_NAME@@|$(GITWEB_CSS)|' \
> -            -e 's|@@GITWEB_JS_NAME@@|$(GITWEB_JS)|' \
>  	    $@.sh > $@+ && \
>  	chmod +x $@+ && \
>  	mv $@+ $@
> @@ -1972,6 +1965,7 @@ install: all
>  	$(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
>  ifndef NO_PERL
>  	$(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
> +	$(MAKE) -C gitweb gitwebdir=$(gitwebdir) install
>  endif

Have you checked that you can use $(gitwebdir) and don't need
$(gitwebdir_SQ) here?  Does git-instaweb installs and works correctly
if 'gitwebdir' contains spaces and single or double quote characters?

But perhaps that doesn't matter in practice, and this is good enough.

> diff --git a/git-instaweb.sh b/git-instaweb.sh
> index f608014..b3e9192 100755
> --- a/git-instaweb.sh
> +++ b/git-instaweb.sh
> @@ -24,6 +24,7 @@ restart        restart the web server
>  fqgitdir="$GIT_DIR"
>  local="$(git config --bool --get instaweb.local)"
>  httpd="$(git config --get instaweb.httpd)"
> +root="$(git config --get instaweb.gitwebdir)"
>  port=$(git config --get instaweb.port)
>  module_path="$(git config --get instaweb.modulepath)"
>  
> @@ -34,6 +35,9 @@ conf="$GIT_DIR/gitweb/httpd.conf"
>  # if installed, it doesn't need further configuration (module_path)
>  test -z "$httpd" && httpd='lighttpd -f'
>  
> +# Default is @@GITWEBDIR@@
> +test -z "$root" && root='@@GITWEBDIR@@'
> +

Nice.

> @@ -57,7 +61,7 @@ resolve_full_httpd () {
>  		# these days and those are not in most users $PATHs
>  		# in addition, we may have generated a server script
>  		# in $fqgitdir/gitweb.
> -		for i in /usr/local/sbin /usr/sbin "$fqgitdir/gitweb"
> +		for i in /usr/local/sbin /usr/sbin "$root" "$fqgitdir/gitweb"
>  		do
>  			if test -x "$i/$httpd_only"
>  			then

You probably want to update comment above this loop.  But this is not
something very important.

Alternatively, if e.g. webrick.rb and webrick (shell script) are
installed in "$fqgitdir/gitweb" directory, there is no need to check
"$root".

>  webrick_conf () {
[...]
> -:DocumentRoot: "$fqgitdir/gitweb"
> +:DocumentRoot: "$root"

>  lighttpd_conf () {
>  	cat > "$conf" <<EOF
> -server.document-root = "$fqgitdir/gitweb"
> +server.document-root = "$root"
[...]
> -setenv.add-environment = ( "PATH" => env.PATH )
> +setenv.add-environment = ( "PATH" => env.PATH, "GITWEB_CONFIG" => env.GITWEB_CONFIG )

>  apache2_conf () {
[...]
> -ServerRoot "$fqgitdir/gitweb"
> -DocumentRoot "$fqgitdir/gitweb"
> +ServerRoot "$root"
> +DocumentRoot "$root"
[...]
>  PerlPassEnv GIT_DIR
>  PerlPassEnv GIT_EXEC_DIR
> +PerlPassEnv GITWEB_CONFIG

> @@ -353,7 +359,7 @@ mongoose_conf() {
>  # For detailed description of every option, visit
>  # http://code.google.com/p/mongoose/wiki/MongooseManual
>  
> -root		$fqgitdir/gitweb
> +root		$root
[...]
> -cgi_env		PATH=$PATH,GIT_DIR=$GIT_DIR,GIT_EXEC_PATH=$GIT_EXEC_PATH
> +cgi_env		PATH=$PATH,GIT_DIR=$GIT_DIR,GIT_EXEC_PATH=$GIT_EXEC_PATH,GITWEB_CONFIG=$GITWEB_CONFIG

All right, those changes are pretty clear.

> @@ -277,14 +281,15 @@ EOF
>  
>  apache2_conf () {
>  	test -z "$module_path" && module_path=/usr/lib/apache2/modules
> -	mkdir -p "$GIT_DIR/gitweb/logs"
>  	bind=
>  	test x"$local" = xtrue && bind='127.0.0.1:'
>  	echo 'text/css css' > "$fqgitdir/mime.types"
>  	cat > "$conf" <<EOF
>  ServerName "git-instaweb"
> -ServerRoot "$fqgitdir/gitweb"
> -DocumentRoot "$fqgitdir/gitweb"
> +ServerRoot "$root"
> +DocumentRoot "$root"
> +ErrorLog "$fqgitdir/gitweb/error.log"
> +CustomLog "$fqgitdir/gitweb/access.log" combined
>  PidFile "$fqgitdir/pid"
>  Listen $bind$port
>  EOF

This is independent change, modifying configuration of apache2 web
server to use the same files for access log and for error log
("$fqgitdir/gitweb/access.log" and "$fqgitdir/gitweb/error.log",
respectively) as the rest of web servers.

Isn't it?

> @@ -370,41 +376,16 @@ mime_types	.gz=application/x-gzip,.tar.gz=application/x-tgz,.tgz=application/x-t
>  EOF
>  }
>  
> -
> -script='
> -s#^(my|our) \$projectroot =.*#$1 \$projectroot = "'$(dirname "$fqgitdir")'";#;
> -s#(my|our) \$gitbin =.*#$1 \$gitbin = "'$GIT_EXEC_PATH'";#;
> -s#(my|our) \$projects_list =.*#$1 \$projects_list = \$projectroot;#;
> -s#(my|our) \$git_temp =.*#$1 \$git_temp = "'$fqgitdir/gitweb/tmp'";#;'
> -
> -gitweb_cgi () {
[...]

> +gitweb_conf() {
> +	cat > "$fqgitdir/gitweb/gitweb_config.perl" <<EOF
> +#!/usr/bin/perl
> +our \$projectroot = "$(dirname "$fqgitdir")";
> +our \$git_temp = "$fqgitdir/gitweb/tmp";
> +our \$projects_list = \$projectroot;
> +EOF
>  }

Right, $GIT (formerly $gitbin) is set when generating gitweb.cgi from
gitweb.perl.

Actually $git_temp is not needed by modern gitweb (from quite some time,
since using external /usr/bin/diff was replaced by git-diff-tree), so
setting it could be removed from gitweb_config.perl.  Nevertheless it is
not a problem having it.

> -gitweb_cgi "$GIT_DIR/gitweb/gitweb.cgi"
> -gitweb_css "$GIT_DIR/@@GITWEB_CSS_NAME@@"
> -gitweb_js  "$GIT_DIR/@@GITWEB_JS_NAME@@"
> +gitweb_conf
>  
>  case "$httpd" in
>  *lighttpd*)
> -- 
> 1.7.1.18.g74211d.dirty


-- 
Jakub Narebski
Poland

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb  structure
  2010-05-22 15:57 ` Jakub Narebski
@ 2010-05-22 16:57   ` Pavan Kumar Sunkara
  2010-05-22 18:59     ` Jakub Narebski
  0 siblings, 1 reply; 6+ messages in thread
From: Pavan Kumar Sunkara @ 2010-05-22 16:57 UTC (permalink / raw
  To: Jakub Narebski; +Cc: git, Eric Wong, Christian Couder, Petr Baudis

2010/5/22 Jakub Narebski <jnareb@gmail.com>:
> On Sat, 22 May 2010, Pavan Kumar Sunkara wrote:
>
>> git-instaweb in its current form (re)creates gitweb.cgi and
>> (some of) required static files in $GIT_DIR/gitweb/ directory.
>> Splitting gitweb would make it difficult for git-instaweb to
>> continue with this method.
>>
>> Use the instaweb.gitwebdir config variable to point git-instaweb script
>> to a global directory which contains gitweb files as server root
>> and the httpd.conf along with server logs and pid go into
>> '$(GIT_DIR)/gitweb' directory.
>
> That's not all this patch changes, isn't it?
>
>  While at it, change apache2 configuration to use the same access log
>  and error log files as the rest of web servers supported by
>  git-instaweb.
>
> While it would be better to have it as a separate commit, I think it
> doesn't matter much, and having it in this patch is acceptable as
> "while at it" change.
>
>>
>> Signed-off-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
>
> I like this change, because it simplifies greatly git-instaweb
> generation; besides the fact that it is necessary for future splitting
> gitweb for better maintability, and for write functionality for gitweb.

Thanks.

> Acked-by: Jakub Narebski <jnareb@gmail.com>
>
> _If_ there is no problem with $(gitwebdir) and not $(gitwebdir_SQ),
> see below for details.
>
>> ---
>>
>> This patch is based on commit 'jn/gitweb-install' in the next branch.
>
> I think it is based on your earlier patches:
>
> * gitweb: Move static files into seperate subdirectory
>  http://article.gmane.org/gmane.comp.version-control.git/147321
> * gitweb: Set default destination directory for installing gitweb in Makefile
>  http://article.gmane.org/gmane.comp.version-control.git/147160
>
> Those are necessary for this patch to be applied.  Well, the second is
> necessary for it to make sense...

Yes. They are necessary patches before this patch.
I assume, they are going to be merged before this patch is.

> BTW. which web servers supported by git-instaweb: lighttpd, apache2,
> webrick, mongoose you have tested your change with?

I tested this patch with lighttpd and apache2.
And am sure about mongoose. But don't know the status with webrick.

>>  Makefile        |   10 +------
>>  git-instaweb.sh |   71 ++++++++++++++++++++----------------------------------
>>  2 files changed, 28 insertions(+), 53 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index caf2f64..91cd726 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1592,15 +1592,8 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/
>>       sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
> [...]
>> +         -e 's|@@GITWEBDIR@@|$(gitwebdir)|g' \
>>           -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
>> -            -e 's|@@GITWEB_CSS_NAME@@|$(GITWEB_CSS)|' \
>> -            -e 's|@@GITWEB_JS_NAME@@|$(GITWEB_JS)|' \
>>           $@.sh > $@+ && \
>>       chmod +x $@+ && \
>>       mv $@+ $@
>> @@ -1972,6 +1965,7 @@ install: all
>>       $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
>>  ifndef NO_PERL
>>       $(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
>> +     $(MAKE) -C gitweb gitwebdir=$(gitwebdir) install
>>  endif
>
> Have you checked that you can use $(gitwebdir) and don't need
> $(gitwebdir_SQ) here?  Does git-instaweb installs and works correctly
> if 'gitwebdir' contains spaces and single or double quote characters?
> But perhaps that doesn't matter in practice, and this is good enough.

Nope. I didn't check it. But you are right.

>
>> diff --git a/git-instaweb.sh b/git-instaweb.sh
>> index f608014..b3e9192 100755
>> --- a/git-instaweb.sh
>> +++ b/git-instaweb.sh
>> @@ -24,6 +24,7 @@ restart        restart the web server
>>  fqgitdir="$GIT_DIR"
>>  local="$(git config --bool --get instaweb.local)"
>>  httpd="$(git config --get instaweb.httpd)"
>> +root="$(git config --get instaweb.gitwebdir)"
>>  port=$(git config --get instaweb.port)
>>  module_path="$(git config --get instaweb.modulepath)"
>>
>> @@ -34,6 +35,9 @@ conf="$GIT_DIR/gitweb/httpd.conf"
>>  # if installed, it doesn't need further configuration (module_path)
>>  test -z "$httpd" && httpd='lighttpd -f'
>>
>> +# Default is @@GITWEBDIR@@
>> +test -z "$root" && root='@@GITWEBDIR@@'
>> +
>
> Nice.
>
>> @@ -57,7 +61,7 @@ resolve_full_httpd () {
>>               # these days and those are not in most users $PATHs
>>               # in addition, we may have generated a server script
>>               # in $fqgitdir/gitweb.
>> -             for i in /usr/local/sbin /usr/sbin "$fqgitdir/gitweb"
>> +             for i in /usr/local/sbin /usr/sbin "$root" "$fqgitdir/gitweb"
>>               do
>>                       if test -x "$i/$httpd_only"
>>                       then
>
> You probably want to update comment above this loop.  But this is not
> something very important.
>
> Alternatively, if e.g. webrick.rb and webrick (shell script) are
> installed in "$fqgitdir/gitweb" directory, there is no need to check
> "$root".
>
>>  webrick_conf () {
> [...]
>> -:DocumentRoot: "$fqgitdir/gitweb"
>> +:DocumentRoot: "$root"
>
>>  lighttpd_conf () {
>>       cat > "$conf" <<EOF
>> -server.document-root = "$fqgitdir/gitweb"
>> +server.document-root = "$root"
> [...]
>> -setenv.add-environment = ( "PATH" => env.PATH )
>> +setenv.add-environment = ( "PATH" => env.PATH, "GITWEB_CONFIG" => env.GITWEB_CONFIG )
>
>>  apache2_conf () {
> [...]
>> -ServerRoot "$fqgitdir/gitweb"
>> -DocumentRoot "$fqgitdir/gitweb"
>> +ServerRoot "$root"
>> +DocumentRoot "$root"
> [...]
>>  PerlPassEnv GIT_DIR
>>  PerlPassEnv GIT_EXEC_DIR
>> +PerlPassEnv GITWEB_CONFIG
>
>> @@ -353,7 +359,7 @@ mongoose_conf() {
>>  # For detailed description of every option, visit
>>  # http://code.google.com/p/mongoose/wiki/MongooseManual
>>
>> -root         $fqgitdir/gitweb
>> +root         $root
> [...]
>> -cgi_env              PATH=$PATH,GIT_DIR=$GIT_DIR,GIT_EXEC_PATH=$GIT_EXEC_PATH
>> +cgi_env              PATH=$PATH,GIT_DIR=$GIT_DIR,GIT_EXEC_PATH=$GIT_EXEC_PATH,GITWEB_CONFIG=$GITWEB_CONFIG
>
> All right, those changes are pretty clear.
>
>> @@ -277,14 +281,15 @@ EOF
>>
>>  apache2_conf () {
>>       test -z "$module_path" && module_path=/usr/lib/apache2/modules
>> -     mkdir -p "$GIT_DIR/gitweb/logs"
>>       bind=
>>       test x"$local" = xtrue && bind='127.0.0.1:'
>>       echo 'text/css css' > "$fqgitdir/mime.types"
>>       cat > "$conf" <<EOF
>>  ServerName "git-instaweb"
>> -ServerRoot "$fqgitdir/gitweb"
>> -DocumentRoot "$fqgitdir/gitweb"
>> +ServerRoot "$root"
>> +DocumentRoot "$root"
>> +ErrorLog "$fqgitdir/gitweb/error.log"
>> +CustomLog "$fqgitdir/gitweb/access.log" combined
>>  PidFile "$fqgitdir/pid"
>>  Listen $bind$port
>>  EOF
>
> This is independent change, modifying configuration of apache2 web
> server to use the same files for access log and for error log
> ("$fqgitdir/gitweb/access.log" and "$fqgitdir/gitweb/error.log",
> respectively) as the rest of web servers.
>
> Isn't it?

Yes. But I included it in this commit because, it is not a big change
to be included in another commit.

>> @@ -370,41 +376,16 @@ mime_types      .gz=application/x-gzip,.tar.gz=application/x-tgz,.tgz=application/x-t
>>  EOF
>>  }
>>
>> -
>> -script='
>> -s#^(my|our) \$projectroot =.*#$1 \$projectroot = "'$(dirname "$fqgitdir")'";#;
>> -s#(my|our) \$gitbin =.*#$1 \$gitbin = "'$GIT_EXEC_PATH'";#;
>> -s#(my|our) \$projects_list =.*#$1 \$projects_list = \$projectroot;#;
>> -s#(my|our) \$git_temp =.*#$1 \$git_temp = "'$fqgitdir/gitweb/tmp'";#;'
>> -
>> -gitweb_cgi () {
> [...]
>
>> +gitweb_conf() {
>> +     cat > "$fqgitdir/gitweb/gitweb_config.perl" <<EOF
>> +#!/usr/bin/perl
>> +our \$projectroot = "$(dirname "$fqgitdir")";
>> +our \$git_temp = "$fqgitdir/gitweb/tmp";
>> +our \$projects_list = \$projectroot;
>> +EOF
>>  }
>
> Right, $GIT (formerly $gitbin) is set when generating gitweb.cgi from
> gitweb.perl.
>
> Actually $git_temp is not needed by modern gitweb (from quite some time,
> since using external /usr/bin/diff was replaced by git-diff-tree), so
> setting it could be removed from gitweb_config.perl.  Nevertheless it is
> not a problem having it.
>
>> -gitweb_cgi "$GIT_DIR/gitweb/gitweb.cgi"
>> -gitweb_css "$GIT_DIR/@@GITWEB_CSS_NAME@@"
>> -gitweb_js  "$GIT_DIR/@@GITWEB_JS_NAME@@"
>> +gitweb_conf
>>
>>  case "$httpd" in
>>  *lighttpd*)
>> --
>> 1.7.1.18.g74211d.dirty
>
>
> --
> Jakub Narebski
> Poland
>

Thanks
-Pavan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb  structure
  2010-05-22 16:57   ` Pavan Kumar Sunkara
@ 2010-05-22 18:59     ` Jakub Narebski
  2010-05-22 19:18       ` Pavan Kumar Sunkara
  0 siblings, 1 reply; 6+ messages in thread
From: Jakub Narebski @ 2010-05-22 18:59 UTC (permalink / raw
  To: Pavan Kumar Sunkara; +Cc: git, Eric Wong, Christian Couder, Petr Baudis

On Sat, 22 May 2010, Pavan Kumar Sunkara wrote:
> 2010/5/22 Jakub Narebski <jnareb@gmail.com>:
>> On Sat, 22 May 2010, Pavan Kumar Sunkara wrote:

>> Acked-by: Jakub Narebski <jnareb@gmail.com>
>>
>> _If_ there is no problem with $(gitwebdir) and not $(gitwebdir_SQ),
>> see below for details.
[...]
>>> diff --git a/Makefile b/Makefile
>>> index caf2f64..91cd726 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -1592,15 +1592,8 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/static/gitweb.css gitweb/
>>>       sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
>> [...]
>>> +         -e 's|@@GITWEBDIR@@|$(gitwebdir)|g' \
>>>           -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
>>> -            -e 's|@@GITWEB_CSS_NAME@@|$(GITWEB_CSS)|' \
>>> -            -e 's|@@GITWEB_JS_NAME@@|$(GITWEB_JS)|' \
>>>           $@.sh> $@+ && \
>>>       chmod +x $@+ && \
>>>       mv $@+ $@
>>> @@ -1972,6 +1965,7 @@ install: all
>>>       $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
>>>  ifndef NO_PERL
>>>       $(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
>>> +     $(MAKE) -C gitweb gitwebdir=$(gitwebdir) install
>>>  endif
>>
>> Have you checked that you can use $(gitwebdir) and don't need
>> $(gitwebdir_SQ) here?  Does git-instaweb installs and works correctly
>> if 'gitwebdir' contains spaces and single or double quote characters?
>> But perhaps that doesn't matter in practice, and this is good enough.
> 
> Nope. I didn't check it. But you are right.

Does it mean that after your patch git-instaweb works correctly if
'gitwebdir' is set to something like (for example):

  gitwebdir="/home/local/some strange \"path'"

-- 
Jakub Narebski
Poland

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb  structure
  2010-05-22 18:59     ` Jakub Narebski
@ 2010-05-22 19:18       ` Pavan Kumar Sunkara
  2010-05-22 19:56         ` Jakub Narebski
  0 siblings, 1 reply; 6+ messages in thread
From: Pavan Kumar Sunkara @ 2010-05-22 19:18 UTC (permalink / raw
  To: Jakub Narebski; +Cc: git, Eric Wong, Christian Couder, Petr Baudis

No. It doesn't.

Do you want me to make that change to and send the patch again ?

- Pavan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb  structure
  2010-05-22 19:18       ` Pavan Kumar Sunkara
@ 2010-05-22 19:56         ` Jakub Narebski
  0 siblings, 0 replies; 6+ messages in thread
From: Jakub Narebski @ 2010-05-22 19:56 UTC (permalink / raw
  To: Pavan Kumar Sunkara; +Cc: git, Eric Wong, Christian Couder, Petr Baudis

On Sat, 22 May 2010, Pavan Kumar Sunkara wrote:

> Do you want me to make that change to and send the patch again ?

Yes, I would like you to.

And push this change to your repository after it is accepted as a final 
version. TIA.
-- 
Jakub Narebski
Poland

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-05-22 19:56 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-22 10:11 [PATCHv2 GSoC] git-instaweb: Configure it to work with new gitweb structure Pavan Kumar Sunkara
2010-05-22 15:57 ` Jakub Narebski
2010-05-22 16:57   ` Pavan Kumar Sunkara
2010-05-22 18:59     ` Jakub Narebski
2010-05-22 19:18       ` Pavan Kumar Sunkara
2010-05-22 19:56         ` Jakub Narebski

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).