By the way, I haven't looked closely, but I'm betting that the problem is 
the difference between a NULL user_args array and an empty one getting 
passed into svn_io_run_diff().
Attached are two untested patches, each of which probably fixes the problem, 
but in different ways.
C. Michael Pilato wrote:
> Jens, using 1.5.x, I can confirm that the two files to diff have shifted 
> to args 5 and 6 (instead of 6 and 7) of the external diff program, and 
> that '-u' is no longer provided to that program.
> 
> So, yeah, looks like a bug, to me.
> 
> And unfortunately, I believe our diff-cmd interface is a form of API, 
> and that this constitutes an API compatability violation.
> 
> 
> Jens Seidel wrote:
>> Hi,
>>
>> I noticed that I had to rewrite my little vimdiff wrapper for svn diff
>> again for 1.5.x. In the past -u was provided as first argument, now it
>> isn't.
>>
>> $ svn help diff
>>   --diff-cmd ARG           : use ARG as diff command
>>   -x [--extensions] ARG    : Default: '-u'. When Subversion is 
>> invoking an
>>                              external diff program, ARG is simply 
>> passed along
>>                              to the program. But when Subversion is 
>> using its
>>                              default internal diff implementation, or 
>> when
>>                              Subversion is displaying blame 
>> annotations, ARG
>>                              could be any of the following:
>>                                 -u (--unified):
>>                                    Output 3 lines of unified context.
>>
>>
>> $ svn diff --diff-cmd diff
>> Index: subversion/po/de.po
>> ===================================================================
>> 9432d9431
>> < # CHECKME: " :"?
>> 9440c9439
>> < "A)bbrechen, Weitermac)hen, E)ditieren :\n"
>> ---
>>> "A)bbrechen, Weitermac)hen, E)ditieren:\n"
>>
>> Is this output style intented? If yes, it should maybe also mentioned 
>> in the svnbook.
>>
>> Jens
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
>> For additional commands, e-mail: dev-help_at_subversion.tigris.org
>>
> 
> 
-- 
C. Michael Pilato <cmpilato_at_collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand
* subversion/libsvn_client/diff.c
  (set_up_diff_cmd_and_options): Initialize argv to NULL.
Index: subversion/libsvn_client/diff.c
===================================================================
--- subversion/libsvn_client/diff.c	(revision 31564)
+++ subversion/libsvn_client/diff.c	(working copy)
@@ -1528,7 +1528,7 @@
   /* If there was a command, arrange options to pass to it. */
   if (diff_cmd_baton->diff_cmd)
     {
-      const char **argv;
+      const char **argv = NULL;
       int argc = options->nelts;
       if (argc)
         {
* subversion/libsvn_subr/io.c
  (svn_io_run_diff): Don't check user_args for NULL-ness; consult the
    num_user_args instead.
Index: subversion/libsvn_subr/io.c
===================================================================
--- subversion/libsvn_subr/io.c	(revision 31564)
+++ subversion/libsvn_subr/io.c	(working copy)
@@ -2243,7 +2243,7 @@
   i = 0;
   args[i++] = diff_utf8;
 
-  if (user_args != NULL)
+  if (num_user_args)
     {
       int j;
       for (j = 0; j < num_user_args; ++j)
Received on 2008-06-10 16:50:45 CEST