git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Jakub Narębski" <jnareb@gmail.com>
To: "Trenton D. Adams" <trenton.d.adams@gmail.com>
Cc: git@vger.kernel.org, Eric Wong <normalperson@yhbt.net>
Subject: Re: git instaweb - share all project files
Date: Sat, 13 Apr 2013 17:21:54 +0200	[thread overview]
Message-ID: <51697812.6020106@gmail.com> (raw)
In-Reply-To: <CAMg8Y2qm9FuuMZh7jsAEyr=joUbsp=5V_zU5U86sW0Y=f2OVBA@mail.gmail.com>

Please do not top-post.

On 11.04.2013, Trenton D. Adams wrote:

> #1 would actually work.  Though long term it would be cool to view it
> with all the most recent commit information, kind of like github does.
>  You know, showing "updated 4 days ago".
> 
> On Wed, Apr 10, 2013 at 11:03 AM, Jakub Narębski <jnareb@gmail.com> wrote:
>> W dniu 07.04.2013 05:02, Trenton D. Adams pisze:
>>
>>> On that first page that shows up, it shows the .git folder.  It would
>>> be kind of nice if it shared out both the git repo and the actual
>>> current project files.  I frequently have stuff I'd like to see in a
>>> web browser, and even requires one (i.e. Navigating to
>>> file:///home/blah/blah doesn't work; ajax requests for example)
>>
>> There are a few possible solutions, from simplest to most complicated:
>>
>> 1. Configure gitweb ran by git-instaweb to have 'worktree' link in
>>    the action bar pointing to 'file:///path/to/repo' (or rather
>>    'file:///path/to/workdir') via 'actions' feature, adding e.g.
>>
>>      $feature{'actions'}{'default'} =
>>         [('worktree', 'file:///path/to/repo', 'summary')];
>>
>>    to gitweb_config.perl / gitweb.conf used by git-instaweb's gitweb.
>>
>>    This of course works only for local use, so either git-instaweb
>>    or gitweb (in config) should check that we use it locally
>>    (e.g. if hostname is 'localhost' or equivalent).
[...]

Unfortunately it turns out such simple solution doesn't really work.

First, for some reason Firefox 20.0 refuses to follow file:/// link,
even though it shows correctly worktree if copy'n'pasted as URL in new
window / new tab.

Second, it would work only for the top git repository.  There can be
repositories being submodules, or in untracked subdirectories (like
e.g. 't/trash directory.tNNNN*/.git' in git/.git), and said 'worktree'
link would always lead to top git repository workdir.

But anyway, here you have it:
-- >8 --
Subject: [PATCH] git-instaweb: Show project files... kind of (WIP)

On first page that git-instaweb shows, it shows the .git folder.  It
would be kind of nice if it shared out both the git repo and the
actual current project files (i.e. current worktree). [...]

[...]

This commit implements solution 1.), with git-instaweb enabling it
only for local use, which means when it is run with `--local` option.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
 git-instaweb.sh | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/git-instaweb.sh b/git-instaweb.sh
index 01a1b05..43ae255 100755
--- a/git-instaweb.sh
+++ b/git-instaweb.sh
@@ -22,6 +22,13 @@ restart        restart the web server
 . git-sh-setup
 
 fqgitdir="$GIT_DIR"
+if test x"$(git rev-parse --is-bare-repository)" = xfalse
+then
+	fqworktree="$(git rev-parse --show-toplevel)"
+else
+	fqworktree=""
+fi
+
 local="$(git config --bool --get instaweb.local)"
 httpd="$(git config --get instaweb.httpd)"
 root="$(git config --get instaweb.gitwebdir)"
@@ -588,6 +595,13 @@ our \$projects_list = \$projectroot;
 
 \$feature{'remote_heads'}{'default'} = [1];
 EOF
+	test x"$fqworktree" != x &&
+	test x"$local" = xtrue &&
+	cat >>"$fqgitdir/gitweb/gitweb_config.perl" <<EOF
+\$feature{'actions'}{'default'} = [
+	('worktree', 'file://$fqworktree', 'summary')
+];
+EOF
 }
 
 configure_httpd() {
-- 
1.8.2.1.367.geafc030.dirty

  reply	other threads:[~2013-04-13 15:22 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-07  3:02 git instaweb - share all project files Trenton D. Adams
2013-04-10 17:03 ` Jakub Narębski
2013-04-10 22:42   ` Trenton D. Adams
2013-04-13 15:21     ` Jakub Narębski [this message]
2013-04-13 20:02       ` Eric Wong
2013-04-14 10:35   ` Jakub Narębski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51697812.6020106@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=normalperson@yhbt.net \
    --cc=trenton.d.adams@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).