On Fri, Mar 08, 2019 at 04:38:44PM +0100, Johannes Schindelin wrote:
> On Thu, 7 Mar 2019, Jeff King wrote:
>
> > When "-L" is in use, we ignore any diff output format that the user
> > provides to us, and just always print a patch (with extra context lines
> > covering the whole area of interest). It's not entirely clear what we
> > should do with all formats (e.g., should "--stat" show just the diffstat
> > of the touched lines, or the stat for the whole file?).
> >
> > But "-s" is pretty clear: the user probably wants to see just the
> > commits that touched those lines, without any diff at all. Let's at
> > least make that work.
>
> Agree. The patch looks obviously good.
Thanks. This leaves the other formats as silently ignored. Do we want to
do something like this:
diff --git a/revision.c b/revision.c
index eb8e51bc63..a1b4fe2aa6 100644
--- a/revision.c
+++ b/revision.c
@@ -2689,6 +2689,10 @@ int setup_revisions(int argc, const char **argv, struct
rev_info *revs, struct s
if (revs->first_parent_only && revs->bisect)
die(_("--first-parent is incompatible with --bisect"));
+ if (revs->line_level_traverse &&
+ (revs->diffopt.output_format &
~(DIFF_FORMAT_PATCH|DIFF_FORMAT_NO_OUTPUT)))
+ die(_("-L does not yet support diff formats besides -p and
-s"));
+
if (revs->expand_tabs_in_log < 0)
revs->expand_tabs_in_log = revs->expand_tabs_in_log_default;
?
-Peff