* [PATCH] instaweb: added support Ruby's WEBrick server
@ 2007-09-18 12:16 mike dalessio
2007-09-18 20:40 ` Eric Wong
2007-09-18 23:15 ` Junio C Hamano
0 siblings, 2 replies; 8+ messages in thread
From: mike dalessio @ 2007-09-18 12:16 UTC (permalink / raw)
To: git, mike, normalperson
running the webrick server with git requires Ruby and Ruby's YAML and
Webrick libraries (both of which come standard with Ruby). nice for
single-user standalone invocations.
the --httpd=webrick option generates a ruby script on the fly to read
httpd.conf options and invoke the web server via library call. this
script is placed in the .git/gitweb directory. it also generates a
shell script in a feeble attempt to invoke ruby in a portable manner,
which assumes that 'ruby' is in the user's $PATH.
Signed-off-by: Mike Dalessio <mike@csa.net>
---
Documentation/git-instaweb.txt | 3 +-
git-instaweb.sh | 44 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt
index cec60ee..914fc4c 100644
--- a/Documentation/git-instaweb.txt
+++ b/Documentation/git-instaweb.txt
@@ -27,7 +27,8 @@ OPTIONS
The HTTP daemon command-line that will be executed.
Command-line options may be specified here, and the
configuration file will be added at the end of the command-line.
- Currently, lighttpd and apache2 are the only supported servers.
+ Currently, lighttpd, apache2 and webrick are the only supported
+ servers.
(Default: lighttpd)
-m|--module-path::
diff --git a/git-instaweb.sh b/git-instaweb.sh
index b79c6b6..803a754 100755
--- a/git-instaweb.sh
+++ b/git-instaweb.sh
@@ -37,7 +37,9 @@ start_httpd () {
else
# many httpds are installed in /usr/sbin or /usr/local/sbin
# these days and those are not in most users $PATHs
- for i in /usr/local/sbin /usr/sbin
+ # in addition, we may have generated a server script
+ # in $fqgitdir/gitweb.
+ for i in /usr/local/sbin /usr/sbin $fqgitdir/gitweb
do
if test -x "$i/$httpd_only"
then
@@ -137,6 +139,43 @@ GIT_DIR="$fqgitdir"
export GIT_EXEC_PATH GIT_DIR
+webrick_conf () {
+ # generate a standalone server script in $fqgitdir/gitweb.
+ cat > "$fqgitdir/gitweb/$httpd.rb" <<EOF
+require 'webrick'
+require 'yaml'
+options = YAML::load_file(ARGV[0])
+options[:StartCallback] = proc do
+ File.open(options[:PidFile],"w") do |f|
+ f.puts Process.pid
+ end
+end
+options[:ServerType] = WEBrick::Daemon
+server = WEBrick::HTTPServer.new(options)
+['INT', 'TERM'].each do |signal|
+ trap(signal) {server.shutdown}
+end
+server.start
+EOF
+ # generate a shell script to invoke the above ruby script,
+ # which assumes _ruby_ is in the user's $PATH. that's _one_
+ # portable way to run ruby, which could be installed anywhere,
+ # really.
+ cat > "$fqgitdir/gitweb/$httpd" <<EOF
+#! /bin/sh
+ruby $fqgitdir/gitweb/$httpd.rb \$*
+EOF
+ chmod +x "$fqgitdir/gitweb/$httpd"
+
+ cat > "$conf" <<EOF
+:Port: $port
+:DocumentRoot: "$fqgitdir/gitweb"
+:DirectoryIndex: ["gitweb.cgi"]
+:PidFile: "$fqgitdir/pid"
+EOF
+ test "$local" = true && echo ':BindAddress: "127.0.0.1"' >> "$conf"
+}
+
lighttpd_conf () {
cat > "$conf" <<EOF
server.document-root = "$fqgitdir/gitweb"
@@ -237,6 +276,9 @@ case "$httpd" in
*apache2*)
apache2_conf
;;
+webrick)
+ webrick_conf
+ ;;
*)
echo "Unknown httpd specified: $httpd"
exit 1
--
1.5.2.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] instaweb: added support Ruby's WEBrick server
2007-09-18 12:16 [PATCH] instaweb: added support Ruby's WEBrick server mike dalessio
@ 2007-09-18 20:40 ` Eric Wong
2007-09-18 23:15 ` Junio C Hamano
1 sibling, 0 replies; 8+ messages in thread
From: Eric Wong @ 2007-09-18 20:40 UTC (permalink / raw)
To: mike dalessio; +Cc: git
mike dalessio <mike@csa.net> wrote:
> running the webrick server with git requires Ruby and Ruby's YAML and
> Webrick libraries (both of which come standard with Ruby). nice for
> single-user standalone invocations.
>
> the --httpd=webrick option generates a ruby script on the fly to read
> httpd.conf options and invoke the web server via library call. this
> script is placed in the .git/gitweb directory. it also generates a
> shell script in a feeble attempt to invoke ruby in a portable manner,
> which assumes that 'ruby' is in the user's $PATH.
>
> Signed-off-by: Mike Dalessio <mike@csa.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
> ---
> Documentation/git-instaweb.txt | 3 +-
> git-instaweb.sh | 44 +++++++++++++++++++++++++++++++++++++++-
> 2 files changed, 45 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt
> index cec60ee..914fc4c 100644
> --- a/Documentation/git-instaweb.txt
> +++ b/Documentation/git-instaweb.txt
> @@ -27,7 +27,8 @@ OPTIONS
> The HTTP daemon command-line that will be executed.
> Command-line options may be specified here, and the
> configuration file will be added at the end of the command-line.
> - Currently, lighttpd and apache2 are the only supported servers.
> + Currently, lighttpd, apache2 and webrick are the only supported
> + servers.
> (Default: lighttpd)
>
> -m|--module-path::
> diff --git a/git-instaweb.sh b/git-instaweb.sh
> index b79c6b6..803a754 100755
> --- a/git-instaweb.sh
> +++ b/git-instaweb.sh
> @@ -37,7 +37,9 @@ start_httpd () {
> else
> # many httpds are installed in /usr/sbin or /usr/local/sbin
> # these days and those are not in most users $PATHs
> - for i in /usr/local/sbin /usr/sbin
> + # in addition, we may have generated a server script
> + # in $fqgitdir/gitweb.
> + for i in /usr/local/sbin /usr/sbin $fqgitdir/gitweb
> do
> if test -x "$i/$httpd_only"
> then
> @@ -137,6 +139,43 @@ GIT_DIR="$fqgitdir"
> export GIT_EXEC_PATH GIT_DIR
>
>
> +webrick_conf () {
> + # generate a standalone server script in $fqgitdir/gitweb.
> + cat > "$fqgitdir/gitweb/$httpd.rb" <<EOF
> +require 'webrick'
> +require 'yaml'
> +options = YAML::load_file(ARGV[0])
> +options[:StartCallback] = proc do
> + File.open(options[:PidFile],"w") do |f|
> + f.puts Process.pid
> + end
> +end
> +options[:ServerType] = WEBrick::Daemon
> +server = WEBrick::HTTPServer.new(options)
> +['INT', 'TERM'].each do |signal|
> + trap(signal) {server.shutdown}
> +end
> +server.start
> +EOF
> + # generate a shell script to invoke the above ruby script,
> + # which assumes _ruby_ is in the user's $PATH. that's _one_
> + # portable way to run ruby, which could be installed anywhere,
> + # really.
> + cat > "$fqgitdir/gitweb/$httpd" <<EOF
> +#! /bin/sh
> +ruby $fqgitdir/gitweb/$httpd.rb \$*
> +EOF
> + chmod +x "$fqgitdir/gitweb/$httpd"
> +
> + cat > "$conf" <<EOF
> +:Port: $port
> +:DocumentRoot: "$fqgitdir/gitweb"
> +:DirectoryIndex: ["gitweb.cgi"]
> +:PidFile: "$fqgitdir/pid"
> +EOF
> + test "$local" = true && echo ':BindAddress: "127.0.0.1"' >> "$conf"
> +}
> +
> lighttpd_conf () {
> cat > "$conf" <<EOF
> server.document-root = "$fqgitdir/gitweb"
> @@ -237,6 +276,9 @@ case "$httpd" in
> *apache2*)
> apache2_conf
> ;;
> +webrick)
> + webrick_conf
> + ;;
> *)
> echo "Unknown httpd specified: $httpd"
> exit 1
> --
> 1.5.2.5
>
--
Eric Wong
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] instaweb: added support Ruby's WEBrick server
2007-09-18 12:16 [PATCH] instaweb: added support Ruby's WEBrick server mike dalessio
2007-09-18 20:40 ` Eric Wong
@ 2007-09-18 23:15 ` Junio C Hamano
2007-09-19 0:41 ` David Symonds
` (2 more replies)
1 sibling, 3 replies; 8+ messages in thread
From: Junio C Hamano @ 2007-09-18 23:15 UTC (permalink / raw)
To: mike dalessio; +Cc: git, normalperson
mike@csa.net (mike dalessio) writes:
> diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt
> index cec60ee..914fc4c 100644
> --- a/Documentation/git-instaweb.txt
> +++ b/Documentation/git-instaweb.txt
> @@ -27,7 +27,8 @@ OPTIONS
> The HTTP daemon command-line that will be executed.
> Command-line options may be specified here, and the
> configuration file will be added at the end of the command-line.
> - Currently, lighttpd and apache2 are the only supported servers.
> + Currently, lighttpd, apache2 and webrick are the only supported
> + servers.
> (Default: lighttpd)
Perhaps we can start thinking about rewording "are the only
suported servers" to "are supported".
> diff --git a/git-instaweb.sh b/git-instaweb.sh
> index b79c6b6..803a754 100755
> --- a/git-instaweb.sh
> +++ b/git-instaweb.sh
> @@ -37,7 +37,9 @@ start_httpd () {
> else
> # many httpds are installed in /usr/sbin or /usr/local/sbin
> # these days and those are not in most users $PATHs
> - for i in /usr/local/sbin /usr/sbin
> + # in addition, we may have generated a server script
> + # in $fqgitdir/gitweb.
> + for i in /usr/local/sbin /usr/sbin $fqgitdir/gitweb
> do
> if test -x "$i/$httpd_only"
> then
I do not think this hunk belongs to this patch. It alone would
be a useful addition to the program even without the rest of
your patch, wouldn't it? Imagine a case where I automatically
would reject all patches that have "Ruby" in it for some unknown
reason. Do we want to drop this hunk in such a case?
> + # generate a shell script to invoke the above ruby script,
> + # which assumes _ruby_ is in the user's $PATH. that's _one_
> + # portable way to run ruby, which could be installed anywhere,
> + # really.
No games with env, type, nor which. Good.
Just a few style things (-) and one concern (+):
> + cat > "$fqgitdir/gitweb/$httpd" <<EOF
> +#! /bin/sh
> +ruby $fqgitdir/gitweb/$httpd.rb \$*
> +EOF
- I do not like extra whitespace between she-bang #! and the
path. Looks very ugly.
- I do not like extra whitespace between redirection > and
redirected filename either. Looks very ugly.
- I prefer such wrapper to exec the command, like this:
#!/bin/sh
exec ruby ...
+ fqgitdir and httpd need to be shell quoted. I do not think
anybody is stupid enough to have his GIT_DIR set to something
like "/opt/funny/; rm -f / nuke-me/.git/" but you would see
spaces and single quotes in pathnames in odd environments.
I wonder how popular instaweb is and how widely it is used.
I've actually wondering if we should demote it to contrib/
somewhere, but it gets occasional updates so people must be
using it...
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] instaweb: added support Ruby's WEBrick server
2007-09-18 23:15 ` Junio C Hamano
@ 2007-09-19 0:41 ` David Symonds
2007-09-19 1:27 ` Johannes Schindelin
[not found] ` <55e906d58f15c79c61d83ad4c52ef085de8ad736.1191687881.git.mike@csa.net>
2 siblings, 0 replies; 8+ messages in thread
From: David Symonds @ 2007-09-19 0:41 UTC (permalink / raw)
To: Junio C Hamano; +Cc: mike dalessio, git, normalperson
On 19/09/2007, Junio C Hamano <gitster@pobox.com> wrote:
> - I do not like extra whitespace between she-bang #! and the
> path. Looks very ugly.
At least according to the Autoconf manual, there are some UNIXes that
require a space after the shebang. Not that I've seen such a system.
Personally, I find it easier to read with the space.
Dave.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] instaweb: added support Ruby's WEBrick server
2007-09-18 23:15 ` Junio C Hamano
2007-09-19 0:41 ` David Symonds
@ 2007-09-19 1:27 ` Johannes Schindelin
[not found] ` <55e906d58f15c79c61d83ad4c52ef085de8ad736.1191687881.git.mike@csa.net>
2 siblings, 0 replies; 8+ messages in thread
From: Johannes Schindelin @ 2007-09-19 1:27 UTC (permalink / raw)
To: Junio C Hamano; +Cc: mike dalessio, git, normalperson
Hi,
On Tue, 18 Sep 2007, Junio C Hamano wrote:
> I wonder how popular instaweb is and how widely it is used. I've
> actually wondering if we should demote it to contrib/ somewhere, but it
> gets occasional updates so people must be using it...
I have to admit that I found it easier to install gitweb manually,
especially with recent documentation enhancements, _and_ the constraint
that I had to use an existing DocumentRoot.
So I would not be opposed to move this into contrib/.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] instaweb: allow for use of auto-generated scripts
[not found] ` <55e906d58f15c79c61d83ad4c52ef085de8ad736.1191687881.git.mike@csa.net>
@ 2007-10-06 17:29 ` mike
[not found] ` <cbdd8ea5ab52c45e87319335546ec7c2c06191cd.1191687881.git.mike@csa.net>
2007-10-14 9:49 ` [PATCH 1/2] instaweb: allow for use of auto-generated scripts Eric Wong
2 siblings, 0 replies; 8+ messages in thread
From: mike @ 2007-10-06 17:29 UTC (permalink / raw)
To: normalperson, gitster; +Cc: git, Mike Dalessio
this patch allows scripts that reside in $fqgitdir/gitweb to be used
for firing up an instaweb server. this lays the groundwork for
extending instaweb support to non-standard web servers, which may
require a script for proper invocation.
Signed-off-by: Mike Dalessio <mike@csa.net>
---
git-instaweb.sh | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/git-instaweb.sh b/git-instaweb.sh
index b79c6b6..42d9c34 100755
--- a/git-instaweb.sh
+++ b/git-instaweb.sh
@@ -37,7 +37,9 @@ start_httpd () {
else
# many httpds are installed in /usr/sbin or /usr/local/sbin
# these days and those are not in most users $PATHs
- for i in /usr/local/sbin /usr/sbin
+ # in addition, we may have generated a server script
+ # in $fqgitdir/gitweb.
+ for i in /usr/local/sbin /usr/sbin "$fqgitdir/gitweb"
do
if test -x "$i/$httpd_only"
then
--
1.5.2.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] instaweb: support for Ruby's WEBrick server
[not found] ` <cbdd8ea5ab52c45e87319335546ec7c2c06191cd.1191687881.git.mike@csa.net>
@ 2007-10-06 17:29 ` mike
0 siblings, 0 replies; 8+ messages in thread
From: mike @ 2007-10-06 17:29 UTC (permalink / raw)
To: normalperson, gitster; +Cc: git, Mike Dalessio
running the webrick server with git requires Ruby and Ruby's YAML and
Webrick libraries (both of which come standard with Ruby). nice for
single-user standalone invocations.
the --httpd=webrick option generates a ruby script on the fly to read
httpd.conf options and invoke the web server via library call. this
script is placed in the .git/gitweb directory. it also generates a
shell script in a feeble attempt to invoke ruby in a portable manner,
which assumes that 'ruby' is in the user's $PATH.
Signed-off-by: Mike Dalessio <mike@csa.net>
---
Documentation/git-instaweb.txt | 2 +-
git-instaweb.sh | 40 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 41 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-instaweb.txt b/Documentation/git-instaweb.txt
index cec60ee..735008c 100644
--- a/Documentation/git-instaweb.txt
+++ b/Documentation/git-instaweb.txt
@@ -27,7 +27,7 @@ OPTIONS
The HTTP daemon command-line that will be executed.
Command-line options may be specified here, and the
configuration file will be added at the end of the command-line.
- Currently, lighttpd and apache2 are the only supported servers.
+ Currently lighttpd, apache2 and webrick are supported.
(Default: lighttpd)
-m|--module-path::
diff --git a/git-instaweb.sh b/git-instaweb.sh
index 42d9c34..859be4a 100755
--- a/git-instaweb.sh
+++ b/git-instaweb.sh
@@ -139,6 +139,43 @@ GIT_DIR="$fqgitdir"
export GIT_EXEC_PATH GIT_DIR
+webrick_conf () {
+ # generate a standalone server script in $fqgitdir/gitweb.
+ cat >"$fqgitdir/gitweb/$httpd.rb" <<EOF
+require 'webrick'
+require 'yaml'
+options = YAML::load_file(ARGV[0])
+options[:StartCallback] = proc do
+ File.open(options[:PidFile],"w") do |f|
+ f.puts Process.pid
+ end
+end
+options[:ServerType] = WEBrick::Daemon
+server = WEBrick::HTTPServer.new(options)
+['INT', 'TERM'].each do |signal|
+ trap(signal) {server.shutdown}
+end
+server.start
+EOF
+ # generate a shell script to invoke the above ruby script,
+ # which assumes _ruby_ is in the user's $PATH. that's _one_
+ # portable way to run ruby, which could be installed anywhere,
+ # really.
+ cat >"$fqgitdir/gitweb/$httpd" <<EOF
+#!/bin/sh
+exec ruby "$fqgitdir/gitweb/$httpd.rb" \$*
+EOF
+ chmod +x "$fqgitdir/gitweb/$httpd"
+
+ cat >"$conf" <<EOF
+:Port: $port
+:DocumentRoot: "$fqgitdir/gitweb"
+:DirectoryIndex: ["gitweb.cgi"]
+:PidFile: "$fqgitdir/pid"
+EOF
+ test "$local" = true && echo ':BindAddress: "127.0.0.1"' >> "$conf"
+}
+
lighttpd_conf () {
cat > "$conf" <<EOF
server.document-root = "$fqgitdir/gitweb"
@@ -239,6 +276,9 @@ case "$httpd" in
*apache2*)
apache2_conf
;;
+webrick)
+ webrick_conf
+ ;;
*)
echo "Unknown httpd specified: $httpd"
exit 1
--
1.5.2.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] instaweb: allow for use of auto-generated scripts
[not found] ` <55e906d58f15c79c61d83ad4c52ef085de8ad736.1191687881.git.mike@csa.net>
2007-10-06 17:29 ` [PATCH 1/2] instaweb: allow for use of auto-generated scripts mike
[not found] ` <cbdd8ea5ab52c45e87319335546ec7c2c06191cd.1191687881.git.mike@csa.net>
@ 2007-10-14 9:49 ` Eric Wong
2 siblings, 0 replies; 8+ messages in thread
From: Eric Wong @ 2007-10-14 9:49 UTC (permalink / raw)
To: mike; +Cc: Junio C Hamano, git
mike@csa.net wrote:
> this patch allows scripts that reside in $fqgitdir/gitweb to be used
> for firing up an instaweb server. this lays the groundwork for
> extending instaweb support to non-standard web servers, which may
> require a script for proper invocation.
>
> Signed-off-by: Mike Dalessio <mike@csa.net>
Thanks, sorry for the late reply, it slipped my mind for a while.
Both patches in this series:
Acked-by: Eric Wong <normalperson@yhbt.net>
> ---
> git-instaweb.sh | 4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/git-instaweb.sh b/git-instaweb.sh
> index b79c6b6..42d9c34 100755
> --- a/git-instaweb.sh
> +++ b/git-instaweb.sh
> @@ -37,7 +37,9 @@ start_httpd () {
> else
> # many httpds are installed in /usr/sbin or /usr/local/sbin
> # these days and those are not in most users $PATHs
> - for i in /usr/local/sbin /usr/sbin
> + # in addition, we may have generated a server script
> + # in $fqgitdir/gitweb.
> + for i in /usr/local/sbin /usr/sbin "$fqgitdir/gitweb"
> do
> if test -x "$i/$httpd_only"
> then
> --
--
Eric Wong
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2007-10-14 9:49 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-09-18 12:16 [PATCH] instaweb: added support Ruby's WEBrick server mike dalessio
2007-09-18 20:40 ` Eric Wong
2007-09-18 23:15 ` Junio C Hamano
2007-09-19 0:41 ` David Symonds
2007-09-19 1:27 ` Johannes Schindelin
[not found] ` <55e906d58f15c79c61d83ad4c52ef085de8ad736.1191687881.git.mike@csa.net>
2007-10-06 17:29 ` [PATCH 1/2] instaweb: allow for use of auto-generated scripts mike
[not found] ` <cbdd8ea5ab52c45e87319335546ec7c2c06191cd.1191687881.git.mike@csa.net>
2007-10-06 17:29 ` [PATCH 2/2] instaweb: support for Ruby's WEBrick server mike
2007-10-14 9:49 ` [PATCH 1/2] instaweb: allow for use of auto-generated scripts Eric Wong
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).