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

Re: [PATCH] Allow git-instaweb to be run from bare repositories

From
Jonas Fonseca <fonseca@diku.dk>
Date
Nov 8, 2007, 15:46 UTC
Message-ID
<20071108154610.GB18727@diku.dk>
In-Reply-To
<7vodec31k0.fsf@gitster.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> wrote Fri, Nov 02, 2007:
Show 30 quoted lines
> Jonas Fonseca <fonseca@diku.dk> writes:
> 
> > Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
> > ---
> >  git-instaweb.sh |    1 +
> >  1 files changed, 1 insertions(+), 0 deletions(-)
> >
> >  On IRC yesterday, two were asking for this and it seems simply enough.
> >  Apparently, git-instaweb is a great way to see if you've set up a
> >  remote repository correctly.
> >
> > diff --git a/git-instaweb.sh b/git-instaweb.sh
> > index 95c3e5a..14917ac 100755
> > --- a/git-instaweb.sh
> > +++ b/git-instaweb.sh
> > @@ -6,6 +6,7 @@ USAGE='[--start] [--stop] [--restart]
> >    [--local] [--httpd=<httpd>] [--port=<port>] [--browser=<browser>]
> >    [--module-path=<path> (for Apache2 only)]'
> >  
> > +SUBDIRECTORY_OK=Yes
> >  . git-sh-setup
> >  
> >  fqgitdir="$GIT_DIR"
> 
> I'd agree with the goal of the patch, and I would not doubt the
> patch worked for you, but it somewhat feels wrong that you can
> say "It is Ok to run this script from a subdirectory" and that
> is the magic to allow something to work in a bare repository.
> 
> Care to share your insights on what is going on?

After disecting the source code in more depth as well as the trace of running git-instaweb inside a bare repository, the command relies on git-sh-setup (which is assumed to be safe in bare repos) to initialize a sane value of GIT_DIR. It uses GIT_DIR to initialize:

	+ fqgitdir=/tmp/git.git

which is never touched later (and could possibly be changed to just use the GIT_DIR variable instead, since either is used interchangably throughout the script. In fact, it later does:

	GIT_DIR="$fqgitdir"

which could be removed. Anyway, this fqgitdir variable is used for creating a place for gitweb and HTTP server configuration files under "$fqgitdir/gitweb".

	+ mkdir -p /tmp/git.git/gitweb/tmp

The remaining things in the script is option handling and setting up the HTTP server configuration. The only place where I see it possibly "spilling out" into the parent directory is this sequence:

	+ dirname /tmp/git.git
	+ script=
	s#^\(my\|our\) $projectroot =.*#\1 $projectroot = "/tmp";#
	s#\(my\|our\) $gitbin =.*#\1 $gitbin = "/home/fonseca/bin";#
	s#\(my\|our\) $projects_list =.*#\1 $projects_list = $projectroot;#
	s#\(my\|our\) $git_temp =.*#\1 $git_temp = "/tmp/git.git/gitweb/tmp";#

Where it creates gitweb.cgi. This might make gitweb try to look for .git directories in subdirectories. Maybe it should create a projects_list file to explicitly list that only "$barerepo.git" is exported?

-- 
Jonas Fonseca
Previous: Junio C Hamano
Message 3 of 3 in “Allow git-instaweb to be run from bare repositories”
  1. Allow git-instaweb to be run from bare repositoriesJonas Fonseca, Nov 2, 2007
  2. Junio C HamanoNov 2, 2007
  3. Jonas FonsecaNov 8, 2007

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.