From: Jakub Narebski <jnareb@gmail.com>
To: "W. Trevor King" <wking@drexel.edu>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v3] Isolate If-Modified-Since handling in gitweb
Date: Wed, 21 Mar 2012 17:55:06 +0100 [thread overview]
Message-ID: <201203211755.07121.jnareb@gmail.com> (raw)
In-Reply-To: <20120321140429.GA28721@odin.tremily.us>
On Wed, Mar 21, 2012, W. Trevor King wrote:
> On Wed, Mar 21, 2012 at 06:19:51AM -0700, Jakub Narebski wrote:
> > By the way, it is custom on this mailing list to usually Cc (send a
> > copy) to all people participating in discussion, and not only to git
> > mailing list.
>
> Ah, sorry. I figured that if you got the original email to the list,
> I'd just be doubling up in your inbox by Cc-ing you directly.
I am not subscribed to git mailing list, and I am reading it and
responding (to those emails that I'm not Cc-ed) via GMane's NNTP
(Usenet) interface:
nntp://news.gmane.org/gmane.comp.version-control.git
And I think I am not the only one. But I guess that even for those
subscribed, emails addressed directly to them take priority, which
is important considering volume of email on git mailing list.
[..]
> > BTW. what happened to diffstat?
>
> My local branch has sequential commits for each patch version (e.g.,
> commits for v1, v2, ...). When it's time to email the list, I'm
> supposed to send logical patches against the trunk (e.g., patches for
> refactoring, git_snapshot, ...). For v2 I just used `git diff
> origin/master` to generate the patch, and it doesn't include the
> diffstat. Now that I'm splitting into two patches, I'll probably use
> `git rebase -i origin/master` and just keep track of the changes by
> hand ;). If there's a better way that I'm overlooking, feel free to
> point me in the right direction.
There is a tool to create patches to send: git-format-patch. Myself I
usually create a new directory for a patch series, e.g. mdir.if_mod.v3,
and use git-format-patch to populate it, e.g.
$ git format-patch origin/master.. -o mdir.if_mod.3/ \
--cover-letter --subject-prefix="PATCH v4"
Note that you need to edit at least cover letter.
BTW. "git diff" has '--stat -p' and '--patch-with-stat' options :-)
> > Tests (to be put, I think, in t/t9501-gitweb-standalone-http-status.sh)?
> > We could use test_tick() and $test_tick for that (or extract formatted
> > committer date from a commit).
>
> I'll try to set that up. Should it be bundled into the git_snapshot
> patch, or should there be three patches:
>
> 1: gitweb: Refactor If-Modified-Since handling
> 2: gitweb: Add If-Modified-Since tests for git_snapshot
> 3: gitweb: Add If-Modified-Since support for git_snapshot
I think it would be better to add initial tests with refactoring, and
snapshot specific tests with snapshot support, e.g.:
1/2: gitweb: Refactor If-Modified-Since handling and add tests
2/2: gitweb: Add If-Modified-Since support for snapshots
> > > @@ -7029,6 +7051,10 @@ sub git_snapshot {
> > >
> > > my ($name, $prefix) = snapshot_name($project, $hash);
> > > my $filename = "$name$known_snapshot_formats{$format}{'suffix'}";
> > > +
> > > + my %co = parse_commit($hash) or die_error(404, "Unknown commit object");
> > > + die_if_unmodified($co{'committer_epoch'});
> > > +
> >
> > That unexplainably changes behavior of 'snapshot' action. Before we
> > would accept snapshot of a tree given by its SHA-1, now we do not.
> >
> > This might be a good idea from a security point of view wrt. leaking
> > information (c.f. "git archive --remote" behavior), but it at least
> > needs to be explained in commit message, and perhaps even in a comment
> > above this line.
> >
> > Alternative solution would be to skip If-Modified-Since handling if we
> > request snapshot by tree id:
> >
> > +
> > + my %co = parse_commit($hash);
> > + die_if_unmodified($co{'committer_epoch'}) if %co;
> > +
>
> I'm still not understanding the problem here. The following all work
> in my testing:
But wouldn't work in my clone... ;-(
> http://.../gitweb.cgi?p=a/.git;a=snapshot;h=1d545cab4a8dc894fae2c2634a74993ea62b054d;sf=tgz
> http://.../gitweb.cgi?p=a/.git;a=snapshot;h=1d5;sf=tgz
> http://.../gitweb.cgi?p=a/.git;a=snapshot;h=HEAD;sf=tgz
>
> Can you give me an example of a hash that you expect to not work?
Currently all of those work
http://.../gitweb.cgi?p=git.git;a=snapshot;h=v1.7.6;sf=tgz
http://.../gitweb.cgi?p=git.git;a=snapshot;h=f696543d;sf=tgz"
http://.../gitweb.cgi?p=git.git;a=snapshot;h=b1485af8;sf=tgz"
v1.7.6 is a tag, f696543d is a commit (v1.7.6^{}), b1485af8 is a tree
(v1.7.6^{tree}).
The last URL would stop working after your change with 404
"Unknown commit object".
I'm not sure but I think that currently 'snapshot' link in the navbar
of the 'tree' view uses that kind of link, with 'h' parameter set to
SHA-1 of a tree.
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2012-03-21 16:55 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-20 0:23 What's cooking in git.git (Mar 2012, #07; Mon, 19) Junio C Hamano
2012-03-15 7:54 ` [PATCH] Pull gitweb If-Modified-Since handling out into its own function and use for snapshots W. Trevor King
2012-03-20 1:48 ` W. Trevor King
2012-03-20 23:07 ` Junio C Hamano
2012-03-20 11:55 ` Jakub Narebski
2012-03-20 16:40 ` [PATCH v2] " W. Trevor King
2012-03-21 12:11 ` [PATCH v3] Isolate If-Modified-Since handling in gitweb W. Trevor King
2012-03-21 13:19 ` Jakub Narebski
2012-03-21 14:04 ` W. Trevor King
2012-03-21 16:55 ` Jakub Narebski [this message]
2012-03-21 17:38 ` W. Trevor King
2012-03-21 19:22 ` Junio C Hamano
2012-03-21 19:55 ` W. Trevor King
2012-03-21 20:04 ` Jakub Narebski
2012-03-21 20:09 ` Junio C Hamano
2012-03-21 20:34 ` W. Trevor King
2012-03-22 13:05 ` Jakub Narebski
2012-03-21 17:21 ` Junio C Hamano
2012-03-22 12:46 ` Jakub Narebski
2012-03-22 17:00 ` Junio C Hamano
2012-03-26 11:09 ` [PATCH v4 0/3] " W. Trevor King
2012-03-26 11:11 ` [PATCH v4 1/3] gitweb: add `status` headers to git_feed() responses W. Trevor King
2012-03-26 11:12 ` [PATCH v4 2/3] gitweb: refactor If-Modified-Since handling W. Trevor King
2012-03-26 17:12 ` Junio C Hamano
2012-03-26 11:13 ` [PATCH v4 3/3] gitweb: add If-Modified-Since handling to git_snapshot() W. Trevor King
2012-03-26 19:14 ` [PATCH v5 " W. Trevor King
2012-03-27 22:31 ` Jakub Narebski
2012-03-28 13:58 ` W. Trevor King
2012-03-27 19:24 ` [PATCH v4 0/3] Isolate If-Modified-Since handling in gitweb Jakub Narebski
2012-03-27 19:49 ` W. Trevor King
2012-03-27 19:57 ` Jakub Narebski
2012-03-27 19:55 ` W. Trevor King
2012-03-27 20:18 ` Junio C Hamano
2012-03-26 17:36 ` [PATCH v4 2/3] gitweb: refactor If-Modified-Since handling W. Trevor King
2012-03-26 18:39 ` Junio C Hamano
2012-03-26 19:12 ` [PATCH v5 " W. Trevor King
2012-03-27 22:24 ` Jakub Narebski
2012-03-28 13:51 ` W. Trevor King
2012-03-28 14:13 ` Jakub Narebski
2012-03-28 15:46 ` [PATCH v6 0/3] " wking
2012-03-28 15:46 ` [PATCH v6 1/3] gitweb: add `status` headers to git_feed() responses wking
2012-03-28 15:47 ` [PATCH v6 2/3] gitweb: refactor If-Modified-Since handling wking
2012-03-28 15:47 ` [PATCH v6 3/3] gitweb: add If-Modified-Since handling to git_snapshot() wking
2012-03-28 16:08 ` Jakub Narebski
2012-03-28 15:56 ` [PATCH v6 0/3] gitweb: refactor If-Modified-Since handling W. Trevor King
2012-03-20 23:35 ` Incremental updates to What's cooking Junio C Hamano
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=201203211755.07121.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=wking@drexel.edu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.