So, I just committed a fix for this problem, but I'm left with additional
questions.
The 'svn diff -x' feature basically replaces the single hardcoded "-u"
argument that gets passed to external diff tools with the arguments parsed
from the value of the -x option. There may be any number of such arguments.
This means that any external diff tool that wants to be robust enough to
deal with the presence or absence of the -x option to 'svn diff' needs to
*not* do as most of our sample wrapper scripts do -- looking at args 6 and 7
to find the diff-able files -- but instead look for those files in the last
two args regardless of how many args there are:
$ svn diff --diff-cmd ~/tests/prargs
Index: COMMITTERS
===================================================================
ARG 0: "/home/cmpilato/tests/prargs"
ARG 1: "-u"
ARG 2: "-L"
ARG 3: "COMMITTERS (revision 31564)"
ARG 4: "-L"
ARG 5: "COMMITTERS (working copy)"
ARG 6: ".svn/text-base/COMMITTERS.svn-base" <--- ok
ARG 7: "/tmp/svndiff.tmp" <--- ok
$ svn diff --diff-cmd ~/tests/prargs -x "arg1"
Index: COMMITTERS
===================================================================
ARG 0: "/home/cmpilato/tests/prargs"
ARG 1: "arg1"
ARG 2: "-L"
ARG 3: "COMMITTERS (revision 31564)"
ARG 4: "-L"
ARG 5: "COMMITTERS (working copy)"
ARG 6: ".svn/text-base/COMMITTERS.svn-base" <--- ok
ARG 7: "/tmp/svndiff.tmp" <--- ok
$ svn diff --diff-cmd ~/tests/prargs -x "arg1 arg2"
Index: COMMITTERS
===================================================================
ARG 0: "/home/cmpilato/tests/prargs"
ARG 1: "arg1"
ARG 2: "arg2"
ARG 3: "-L"
ARG 4: "COMMITTERS (revision 31564)"
ARG 5: "-L"
ARG 6: "COMMITTERS (working copy)"
ARG 7: ".svn/text-base/COMMITTERS.svn-base" <-- oops!
ARG 8: "/tmp/svndiff.tmp" <-- oops!
$
That's an annoyance for those scripts, but I guess we don't have to claim
backward compatibility when the -x option is present since it is new to 1.5.
I won't stop the release on account of this. Just means there's more work
for the book authors to do to explain this.
This makes we wonder at another question, though -- if we're already
dropping the "-u" built-in default argument, why didn't we also go ahead and
drop the "-L label1 -L label2" arguments? Is it because those would be
harder for an external tool to discover, given the parameters it *is* handed?
C. Michael Pilato wrote:
> In addition to this, I believe we have an API violation in the external
> diff mechanism, as reported by Jens Seidel. See for more information:
> http://svn.haxx.se/dev/archive-2008-06/0387.shtml
>
>
> Kamesh Jayachandran wrote:
>> Hi All,
>>
>> Build gave the following warning
>> <snip>
>> subversion/libsvn_repos/hooks.c: In function
>> `svn_repos__hooks_start_commit': subversion/libsvn_repos/hooks.c:579:
>> warning: assignment discards qualifiers from pointer target type
>> </snip>
>>
>> This has been fixed in /trunk(r31673) and nominated to 1.5.x by stsp.
>>
>>
>> Ran make check * (FS_TYPE=bdb and fsfs)
>> All tests PASSed.
>> Ran make svnserveautocheck * (FS_TYPE=bdb and fsfs)
>> All tests PASSed.
>> Ran make davautocheck * (FS_TYPE=bdb and fsfs) * (HTTP_LIBRARY=neon).
>> All tests PASSed.
>>
>> Ran make davautocheck * (FS_TYPE=bdb and fsfs) * (HTTP_LIBRARY=serf).
>> Apart from authz_tests.py tests 1 and 12, rest of the other tests have
>> PASSed.
>>
>> +1 to release as serf is still experimental.
>>
>>
>> My signature for subversion-1.5.0-rc10.tar.bz2
>>
>> -
>
>
> ---------------------------------------------------------------------
> 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
Received on 2008-06-10 19:15:50 CEST