git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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 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).