Re: Coredump when javahl SVNClient::diff() called with diff-cmd set

2018-10-29 Thread Branko Čibej
On 29.10.2018 10:20, matthew.b...@nats.co.uk wrote:
>
> On 2018/10/25 11:18:51, Branko Čibej  wrote: 
>> On 25.10.2018 12:41, BURT, Matthew J wrote:
>>> Hi,
>>>
>>>  
>>>
>>> We’ve got a number of developers using the javahl bindings from Eclipse
>>>
>>> via subclipse.
>>>
>>>  
>>>
>>> One of them recently reported a coredump against 1.10.3. I’ve also
>>>
>>> reproduced it with 1.9.7.
>>>
>>>  
>>>
>>> The problem occurs when SVNClient::diff() is called with a diff-cmd
>>>
>>> defined in the user’s ~/.subversion/config file.
>>>
>>>  
>>>
>>> SVNClient::diff() calls svn_client_diff6() with the errstream explicitly
>>>
>>> set to NULL and the diff command in dwi->diff_cmd.
>>>
>>>  
>>>
>>> Further down in the code, if diff_content_changed() from
>>>
>>> subversion/libsvn_client/diff.c is called, the NULL errstream is
>>>
>>> de-referenced with a call to svn_stream__aprfile().
>>>
>>>  
>>>
>>> I’ve put together a simple patch to avoid the null dereference, but I’m
>>>
>>> not 100% sure this is the correct solution. The code suggests to me that
>>>
>>> the intention is to allow the errstream parameter for svn_client_diff6()
>>>
>>> to be set to NULL, but maybe I’m misreading it.
>>>
>>>  
>>>
>>> Is this the correct approach, and should I submit this patch for
>>>
>>> consideration?
>>>
>> The docstring for svn_client_diff7 (..._diff6 was deprecated on trunk)
>> doesn't say that outstream or errstream may be NULL; that's pretty
>> definitive. This should be fixed in the native JavaHL code; either an
>> actual stream should be used such that JavaHL users can read it (in this
>> case I suspect that the JavaHL API would have to be upgraded), or a
>> stream that ignores all writes should be used.
>>
>> -- Brane
>>
>>
> OK - that's clear.
>
> I've replaced both NULL values in the JavaHL code with an svn_stream_empty in 
> the pool that's in-scope for the call. We've re-tested with Eclipse/subclipse 
> and it seems to have solved the crash we're seeing. This is on 1.10.3.
>
> I can submit a patch for trunk if you like, but I note that JavaHL on trunk 
> is still using ..._diff6.

Please do submit a patch against trunk. That JavaHL has not been updated
to ..._diff7 is not your problem. :)

-- Brane



Re: Coredump when javahl SVNClient::diff() called with diff-cmd set

2018-10-29 Thread matthew . burt



On 2018/10/25 11:18:51, Branko Čibej  wrote: 
> On 25.10.2018 12:41, BURT, Matthew J wrote:
> >
> > Hi,
> >
> >  
> >
> > We’ve got a number of developers using the javahl bindings from Eclipse
> >
> > via subclipse.
> >
> >  
> >
> > One of them recently reported a coredump against 1.10.3. I’ve also
> >
> > reproduced it with 1.9.7.
> >
> >  
> >
> > The problem occurs when SVNClient::diff() is called with a diff-cmd
> >
> > defined in the user’s ~/.subversion/config file.
> >
> >  
> >
> > SVNClient::diff() calls svn_client_diff6() with the errstream explicitly
> >
> > set to NULL and the diff command in dwi->diff_cmd.
> >
> >  
> >
> > Further down in the code, if diff_content_changed() from
> >
> > subversion/libsvn_client/diff.c is called, the NULL errstream is
> >
> > de-referenced with a call to svn_stream__aprfile().
> >
> >  
> >
> > I’ve put together a simple patch to avoid the null dereference, but I’m
> >
> > not 100% sure this is the correct solution. The code suggests to me that
> >
> > the intention is to allow the errstream parameter for svn_client_diff6()
> >
> > to be set to NULL, but maybe I’m misreading it.
> >
> >  
> >
> > Is this the correct approach, and should I submit this patch for
> >
> > consideration?
> >
> 
> The docstring for svn_client_diff7 (..._diff6 was deprecated on trunk)
> doesn't say that outstream or errstream may be NULL; that's pretty
> definitive. This should be fixed in the native JavaHL code; either an
> actual stream should be used such that JavaHL users can read it (in this
> case I suspect that the JavaHL API would have to be upgraded), or a
> stream that ignores all writes should be used.
> 
> -- Brane
> 
> 
OK - that's clear.

I've replaced both NULL values in the JavaHL code with an svn_stream_empty in 
the pool that's in-scope for the call. We've re-tested with Eclipse/subclipse 
and it seems to have solved the crash we're seeing. This is on 1.10.3.

I can submit a patch for trunk if you like, but I note that JavaHL on trunk is 
still using ..._diff6.





Re: Coredump when javahl SVNClient::diff() called with diff-cmd set

2018-10-25 Thread Branko Čibej
On 25.10.2018 12:41, BURT, Matthew J wrote:
>
> Hi,
>
>  
>
> We’ve got a number of developers using the javahl bindings from Eclipse
>
> via subclipse.
>
>  
>
> One of them recently reported a coredump against 1.10.3. I’ve also
>
> reproduced it with 1.9.7.
>
>  
>
> The problem occurs when SVNClient::diff() is called with a diff-cmd
>
> defined in the user’s ~/.subversion/config file.
>
>  
>
> SVNClient::diff() calls svn_client_diff6() with the errstream explicitly
>
> set to NULL and the diff command in dwi->diff_cmd.
>
>  
>
> Further down in the code, if diff_content_changed() from
>
> subversion/libsvn_client/diff.c is called, the NULL errstream is
>
> de-referenced with a call to svn_stream__aprfile().
>
>  
>
> I’ve put together a simple patch to avoid the null dereference, but I’m
>
> not 100% sure this is the correct solution. The code suggests to me that
>
> the intention is to allow the errstream parameter for svn_client_diff6()
>
> to be set to NULL, but maybe I’m misreading it.
>
>  
>
> Is this the correct approach, and should I submit this patch for
>
> consideration?
>

The docstring for svn_client_diff7 (..._diff6 was deprecated on trunk)
doesn't say that outstream or errstream may be NULL; that's pretty
definitive. This should be fixed in the native JavaHL code; either an
actual stream should be used such that JavaHL users can read it (in this
case I suspect that the JavaHL API would have to be upgraded), or a
stream that ignores all writes should be used.

-- Brane



Coredump when javahl SVNClient::diff() called with diff-cmd set

2018-10-25 Thread BURT, Matthew J
Hi,

We've got a number of developers using the javahl bindings from Eclipse
via subclipse.

One of them recently reported a coredump against 1.10.3. I've also
reproduced it with 1.9.7.

The problem occurs when SVNClient::diff() is called with a diff-cmd
defined in the user's ~/.subversion/config file.

SVNClient::diff() calls svn_client_diff6() with the errstream explicitly
set to NULL and the diff command in dwi->diff_cmd.

Further down in the code, if diff_content_changed() from
subversion/libsvn_client/diff.c is called, the NULL errstream is
de-referenced with a call to svn_stream__aprfile().

I've put together a simple patch to avoid the null dereference, but I'm
not 100% sure this is the correct solution. The code suggests to me that
the intention is to allow the errstream parameter for svn_client_diff6()
to be set to NULL, but maybe I'm misreading it.

Is this the correct approach, and should I submit this patch for
consideration?

Thanks

***
If you are not the intended recipient, please notify our Help Desk at Email 
information.soluti...@nats.co.uk
immediately. You should not copy or use this email or attachment(s) for any 
purpose nor disclose
their contents to any other person.

NATS computer systems may be monitored and communications carried on them 
recorded, to 
secure the effective operation of the system.

Please note that neither NATS nor the sender accepts any responsibility for 
viruses or any losses
caused as a result of viruses and it is your responsibility to scan or 
otherwise check this email
and any attachments.

NATS means NATS (En Route) plc (company number: 4129273), NATS (Services) Ltd 
(company number 4129270), NATSNAV Ltd (company number: 4164590) 
or NATS Ltd (company number 3155567) or NATS Holdings Ltd (company number 
4138218). 
All companies are registered in England and their registered office is at 4000 
Parkway, 
Whiteley, Fareham, Hampshire, PO15 7FL.

***


Re: Unable to shelve changes when using custom diff-cmd

2018-06-28 Thread Julian Foad
> Csongor Pal  writes:
>> When running an svn shelve command I get the diffs opened up in
>> FileMerge and the command fails with: svn: E29: No changes were
>> shelved
> [...]
>> I'm using svn, version 1.10.0 (r1827917) on macOS 10.13.

Philip Martin wrote: 
> [...]  The long term fix for 1.10 might be to change the Subversion code
> so that shelve always runs the internal diff.

I have filed this issue as https://issues.apache.org/jira/browse/SVN-4758 and 
committed a fix in http://svn.apache.org/r1834612 which is nominated for 
backport to 1.10.x.

Thanks for the report.
- Julian




Re: Unable to shelve changes when using custom diff-cmd

2018-06-27 Thread Philip Martin
Csongor Pal  writes:

> I ran into an issue with svn shelve on my setup. I use the following
> script as my diff-cmd to open diffs with FileMerge on macOS:
> svn-diffwrap.sh
> <https://gist.github.com/dtjm/523243/6975de552166beb08943fe8a44f8b5ddbb29a875#file-svn-diffwrap-sh>
>
> When running an svn shelve command I get the diffs opened up in
> FileMerge and the command fails with: svn: E29: No changes were
> shelved
>
> When I remove the diff-cmd setting from the config file svn shelve
> works as expected, but is there a way to have both features work at
> the same time?
>
> I'm using svn, version 1.10.0 (r1827917) on macOS 10.13.

The shelve feature in 1.10 relies on a valid diff being written to
standard output.  If the configured diff_cmd invokes a GUI and doesn't
write a diff to stdout then attempts to shelve will fail.

Trunk/1.11 doesn't have this problem because the shelve code no longer
relies on diff writing to stdout.  The long term fix for 1.10 might be
to change the Subversion code so that shelve always runs the internal
diff.

In the short term, a 1.10 user might be able to fix the problem by
making the configured diff_cmd detect when output to stdout is required.
In this case diff_cmd is a shell script so perhaps using test's -t to
determine whether stdout is a terminal would work:

if [ -t 1 ] ; then
   # original script to invoke custom diff
   ...
else
   # write standard diff to stdout
   diff "$1" "$2" "$3" "$4" "$5" "$6" "$7"
fi

That may not work if using some sort of GUI Subversion client which
always redirects stdout.  In that case a solution might be to make the
configured diff_cmd always write a diff to stdout in addition to
whatever else it does.

-- 
Philip


Re: Unable to shelve changes when using custom diff-cmd

2018-06-27 Thread Daniel Shahaf
Branko Čibej wrote on Tue, 26 Jun 2018 12:37 +0200:
> It would be helpful if the wrapper script returned the exit code from
> the diff program. Something like 'exit $?' at the end would do it.

Come again?  Appending 'exit $?' to a shell script is a no-op; a script
returns the exit code of its last command.

[[[
% echo '(exit 42)' | sh; echo $?
42
]]]


Re: Unable to shelve changes when using custom diff-cmd

2018-06-26 Thread Branko Čibej
On 26.06.2018 12:19, Csongor Pal wrote:
> Hi,
>
> I ran into an issue with svn shelve on my setup. I use the following
> script as my diff-cmd to open diffs with FileMerge on
> macOS: svn-diffwrap.sh
> <https://gist.github.com/dtjm/523243/6975de552166beb08943fe8a44f8b5ddbb29a875#file-svn-diffwrap-sh>
>
> When running an svn shelve command I get the diffs opened up in
> FileMerge and the command fails with: svn: E29: No changes were
> shelved
>
> When I remove the diff-cmd setting from the config file svn shelve
> works as expected, but is there a way to have both features work at
> the same time?

It would be helpful if the wrapper script returned the exit code from
the diff program. Something like 'exit $?' at the end would do it.

-- Brane



Unable to shelve changes when using custom diff-cmd

2018-06-26 Thread Csongor Pal
Hi,

I ran into an issue with svn shelve on my setup. I use the following script as 
my diff-cmd to open diffs with FileMerge on macOS: svn-diffwrap.sh 
<https://gist.github.com/dtjm/523243/6975de552166beb08943fe8a44f8b5ddbb29a875#file-svn-diffwrap-sh>

When running an svn shelve command I get the diffs opened up in FileMerge and 
the command fails with: svn: E29: No changes were shelved

When I remove the diff-cmd setting from the config file svn shelve works as 
expected, but is there a way to have both features work at the same time?

I'm using svn, version 1.10.0 (r1827917) on macOS 10.13.


Thanks,
Csongor

Re: svn generates long lists of empty diffs with --diff-cmd

2017-05-05 Thread Daniel Shahaf
Alexey Neyman wrote on Fri, May 05, 2017 at 08:50:07 -0700:
> On 04/20/2017 10:44 PM, Alexey Neyman wrote:
> >On 04/20/2017 09:58 PM, Alexey Neyman wrote:
> >>No, plain 'svn diff' does not show any differences, not even properties.
> >>For example:
> >>
> >>[aneyman@rhel-build2 src]$ svn diff $URL/SETUP.bash SETUP.bash
> >>[aneyman@rhel-build2 src]$ svn diff --diff-cmd=diff $URL/SETUP.bash
> >>SETUP.bash
> >>Index: SETUP.bash
> >>===
> >Some more information:
> >- While the properties on the file itself are the same, the inherited
> >properties differ (at least, svn:mergeinfo on the parent directory).
> >- This behavior is observed on 1.10.0-dev, 1.9.x and 1.8.x. Subversion
> >1.7.x does not display these spurious  "Index:" lines.
> >
> So, given the information above, can it be considered a bug/regression?

Sure.


Re: svn generates long lists of empty diffs with --diff-cmd

2017-05-05 Thread Alexey Neyman

On 04/20/2017 10:44 PM, Alexey Neyman wrote:

On 04/20/2017 09:58 PM, Alexey Neyman wrote:

On 04/20/2017 06:52 AM, Bert Huijben wrote:

-Original Message-
From: Alexey Neyman [mailto:sti...@att.net]
Sent: donderdag 20 april 2017 02:59
To: users@subversion.apache.org
Subject: svn generates long lists of empty diffs with --diff-cmd

Hi,

I noticed that SVN generates a lot of spurious diffs when using a
--diff-cmd option that look like this:

Index: arch/alpha/boot/tools/objstrip.c
==
=
Index: arch/alpha/boot/Makefile
==
=

Is it possible to suppress such empty diffs? This makes the tools like
ReviewBoard (www.reviewboard.org) examine a lot of unchanged files and
slows them down considerably and unnecessary.

What argument do you pass to --diff-cmd ?

svn diff --diff-cmd=diff
Is it possible that the files are actually different, but your diff 
command reports that they are not different (e.g. after normalizing 
whitespace). I think this header is printed on changed files, right 
before invoking the diff command.
No, plain 'svn diff' does not show any differences, not even 
properties. For example:


[aneyman@rhel-build2 src]$ svn diff $URL/SETUP.bash SETUP.bash
[aneyman@rhel-build2 src]$ svn diff --diff-cmd=diff $URL/SETUP.bash 
SETUP.bash

Index: SETUP.bash
===

Some more information:
- While the properties on the file itself are the same, the inherited 
properties differ (at least, svn:mergeinfo on the parent directory).
- This behavior is observed on 1.10.0-dev, 1.9.x and 1.8.x. Subversion 
1.7.x does not display these spurious  "Index:" lines.



So, given the information above, can it be considered a bug/regression?

Regards,
Alexey.

Regards,
Alexey.




Re: svn generates long lists of empty diffs with --diff-cmd

2017-04-20 Thread Alexey Neyman

On 04/20/2017 09:58 PM, Alexey Neyman wrote:

On 04/20/2017 06:52 AM, Bert Huijben wrote:

-Original Message-
From: Alexey Neyman [mailto:sti...@att.net]
Sent: donderdag 20 april 2017 02:59
To: users@subversion.apache.org
Subject: svn generates long lists of empty diffs with --diff-cmd

Hi,

I noticed that SVN generates a lot of spurious diffs when using a
--diff-cmd option that look like this:

Index: arch/alpha/boot/tools/objstrip.c
==
=
Index: arch/alpha/boot/Makefile
==
=

Is it possible to suppress such empty diffs? This makes the tools like
ReviewBoard (www.reviewboard.org) examine a lot of unchanged files and
slows them down considerably and unnecessary.

What argument do you pass to --diff-cmd ?

svn diff --diff-cmd=diff
Is it possible that the files are actually different, but your diff 
command reports that they are not different (e.g. after normalizing 
whitespace). I think this header is printed on changed files, right 
before invoking the diff command.
No, plain 'svn diff' does not show any differences, not even 
properties. For example:


[aneyman@rhel-build2 src]$ svn diff $URL/SETUP.bash SETUP.bash
[aneyman@rhel-build2 src]$ svn diff --diff-cmd=diff $URL/SETUP.bash 
SETUP.bash

Index: SETUP.bash
===

Some more information:
- While the properties on the file itself are the same, the inherited 
properties differ (at least, svn:mergeinfo on the parent directory).
- This behavior is observed on 1.10.0-dev, 1.9.x and 1.8.x. Subversion 
1.7.x does not display these spurious  "Index:" lines.


Regards,
Alexey.


Re: svn generates long lists of empty diffs with --diff-cmd

2017-04-20 Thread Alexey Neyman

On 04/20/2017 06:52 AM, Bert Huijben wrote:

-Original Message-
From: Alexey Neyman [mailto:sti...@att.net]
Sent: donderdag 20 april 2017 02:59
To: users@subversion.apache.org
Subject: svn generates long lists of empty diffs with --diff-cmd

Hi,

I noticed that SVN generates a lot of spurious diffs when using a
--diff-cmd option that look like this:

Index: arch/alpha/boot/tools/objstrip.c
==
=
Index: arch/alpha/boot/Makefile
==
=

Is it possible to suppress such empty diffs? This makes the tools like
ReviewBoard (www.reviewboard.org) examine a lot of unchanged files and
slows them down considerably and unnecessary.

What argument do you pass to --diff-cmd ?

svn diff --diff-cmd=diff

Is it possible that the files are actually different, but your diff command 
reports that they are not different (e.g. after normalizing whitespace). I 
think this header is printed on changed files, right before invoking the diff 
command.
No, plain 'svn diff' does not show any differences, not even properties. 
For example:


[aneyman@rhel-build2 src]$ svn diff $URL/SETUP.bash SETUP.bash
[aneyman@rhel-build2 src]$ svn diff --diff-cmd=diff $URL/SETUP.bash 
SETUP.bash

Index: SETUP.bash
===

Alexey.


RE: svn generates long lists of empty diffs with --diff-cmd

2017-04-20 Thread Bert Huijben


> -Original Message-
> From: Alexey Neyman [mailto:sti...@att.net]
> Sent: donderdag 20 april 2017 02:59
> To: users@subversion.apache.org
> Subject: svn generates long lists of empty diffs with --diff-cmd
> 
> Hi,
> 
> I noticed that SVN generates a lot of spurious diffs when using a
> --diff-cmd option that look like this:
> 
> Index: arch/alpha/boot/tools/objstrip.c
> ==
> =
> Index: arch/alpha/boot/Makefile
> ==
> =
> 
> Is it possible to suppress such empty diffs? This makes the tools like
> ReviewBoard (www.reviewboard.org) examine a lot of unchanged files and
> slows them down considerably and unnecessary.

What argument do you pass to --diff-cmd ?

Is it possible that the files are actually different, but your diff command 
reports that they are not different (e.g. after normalizing whitespace). I 
think this header is printed on changed files, right before invoking the diff 
command.

Bert

> 
> Regards,
> Alexey.




svn generates long lists of empty diffs with --diff-cmd

2017-04-19 Thread Alexey Neyman

Hi,

I noticed that SVN generates a lot of spurious diffs when using a 
--diff-cmd option that look like this:


Index: arch/alpha/boot/tools/objstrip.c
===
Index: arch/alpha/boot/Makefile
===

Is it possible to suppress such empty diffs? This makes the tools like 
ReviewBoard (www.reviewboard.org) examine a lot of unchanged files and 
slows them down considerably and unnecessary.


Regards,
Alexey.



Re: svn --diff-cmd not working

2016-04-11 Thread loudking
Hi all, it turns out that the problem is because of End-of-Line in the 
wrapper script. Thank you for all your help.

On Thursday, April 7, 2016 at 3:21:39 PM UTC+8, loudking wrote:
>
> Dear all, I configured svn to call a wrapper script for diff command but 
> encountered following error:
>
> ~/knowsg.com/steps $ svn diff command_at_development.txt
> Index: command_at_development.txt
> ===
> exec of '/home/knowsg_admin/bin/svndiffwrap.sh' failed: No such file or 
> directorysvn: '/home/knowsg_admin/bin/svndiffwrap.sh' returned 255
>
>
> part of ~/.subversion/config is like this:
>
> ### Set diff-cmd to the absolute path of your 'diff' program.
> ### This will override the compile-time default, which is to use
> ### Subversion's internal diff implementation.
> # diff-cmd = diff_program (diff, gdiff, etc.)
> diff-cmd = /home/knowsg_admin/bin/svndiffwrap.sh
>
>
> But the script is right there with executing privileges:
>
> ~/knowsg.com/steps $ ll /home/knowsg_admin/bin
> total 4.0K
> -rwxr-xr-x 1 knowsg_admin knowsg_admin 369 Apr 5 11:06 svndiffwrap.sh*
>
>
> Even its parent directory is on $PATH:
> ~/knowsg.com/steps $ echo $PATH
> /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin
> :/sbin:/home/knowsg_admin/bin
>
>
> Can anybody help me with this please? Thanks.
>


Re: svn --diff-cmd not working

2016-04-07 Thread Torge Riedel

Am 08.04.2016 um 03:25 schrieb Ryan Schmidt:


On Apr 7, 2016, at 2:21 AM, loudking wrote:


Dear all, I configured svn to call a wrapper script for diff command but 
encountered following error:

~/knowsg.com/steps $ svn diff command_at_development.txt
Index: command_at_development.txt
===
exec of '/home/knowsg_admin/bin/svndiffwrap.sh' failed: No such file or 
directorysvn: '/home/knowsg_admin/bin/svndiffwrap.sh' returned 255


part of ~/.subversion/config is like this:

### Set diff-cmd to the absolute path of your 'diff' program.
### This will override the compile-time default, which is to use
### Subversion's internal diff implementation.
# diff-cmd = diff_program (diff, gdiff, etc.)
diff-cmd = /home/knowsg_admin/bin/svndiffwrap.sh


But the script is right there with executing privileges:

~/knowsg.com/steps $ ll /home/knowsg_admin/bin
total 4.0K
-rwxr-xr-x 1 knowsg_admin knowsg_admin 369 Apr 5 11:06 svndiffwrap.sh*


Even its parent directory is on $PATH:
~/knowsg.com/steps $ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/knowsg_admin/bin


Can anybody help me with this please? Thanks.


Are you using SELinux? If so, you may need to tell it to allow that script to 
be executed.





Can you show us the header of the script? I'm wondering why it says "No such file or 
directorysvn"! Why is there this "svn"? What script interpreter have you specified? 
Is it installed and placed at the location specified in the script? This might raise this error too.

Torge


Re: svn --diff-cmd not working

2016-04-07 Thread Ryan Schmidt

On Apr 7, 2016, at 2:21 AM, loudking wrote:

> Dear all, I configured svn to call a wrapper script for diff command but 
> encountered following error:
> 
> ~/knowsg.com/steps $ svn diff command_at_development.txt
> Index: command_at_development.txt
> ===
> exec of '/home/knowsg_admin/bin/svndiffwrap.sh' failed: No such file or 
> directorysvn: '/home/knowsg_admin/bin/svndiffwrap.sh' returned 255
> 
> 
> part of ~/.subversion/config is like this:
> 
> ### Set diff-cmd to the absolute path of your 'diff' program.
> ### This will override the compile-time default, which is to use
> ### Subversion's internal diff implementation.
> # diff-cmd = diff_program (diff, gdiff, etc.)
> diff-cmd = /home/knowsg_admin/bin/svndiffwrap.sh
> 
> 
> But the script is right there with executing privileges:
> 
> ~/knowsg.com/steps $ ll /home/knowsg_admin/bin
> total 4.0K
> -rwxr-xr-x 1 knowsg_admin knowsg_admin 369 Apr 5 11:06 svndiffwrap.sh*
> 
> 
> Even its parent directory is on $PATH:
> ~/knowsg.com/steps $ echo $PATH
> /usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/knowsg_admin/bin
> 
> 
> Can anybody help me with this please? Thanks.

Are you using SELinux? If so, you may need to tell it to allow that script to 
be executed.




Re: svn --diff-cmd not working

2016-04-07 Thread Yves Martin
Hello,
Are you sure there are proper ${6} and ${7} arguments in any cases ?
You should add check in your script before invoking vim -d
I also recommend to end script with "exec /usr/bin/vim "

-- 
Yves Martin


Re: svn --diff-cmd not working

2016-04-07 Thread Stefan Sperling
On Thu, Apr 07, 2016 at 04:55:24PM +0800, Hongliang Wang wrote:
> Hi Stefan, Thanks for your reply. The contents of my wrapper likes this and
> it indeed has #!/bin/sh
> 
> ~/bin $ cat svndiffwrap.sh
> #!/bin/sh
> 
> /usr/bin/vim -d ${6} ${7}
> 
> /bin/sh and /usr/bin/vim both exists.
> 
> ~/bin $ ll /bin/sh
> lrwxrwxrwx. 1 root root 4 Mar 21 12:44 /bin/sh -> bash*
> ~/bin $ ll /usr/bin/vim
> -rwxr-xr-x 1 root root 2.1M Jul 24  2015 /usr/bin/vim*

I tried the equivalent configuration on my computer and it works for me.

I don't see why this doesn't work for you. Sorry, no idea :(


Re: svn --diff-cmd not working

2016-04-07 Thread Stefan

Hi loudking,

Dear all, I configured svn to call a wrapper script for diff command 
but encountered following error:


|
~/knowsg.com/steps $ svn diff command_at_development.txt
Index:command_at_development.txt
===
execof '/home/knowsg_admin/bin/svndiffwrap.sh'failed:Nosuch file 
ordirectorysvn:'/home/knowsg_admin/bin/svndiffwrap.sh'returned 255

|


part of ~/.subversion/config is like this:

|
### Set diff-cmd to the absolute path of your 'diff' program.
### This will override the compile-time default, which is to use
### Subversion's internal diff implementation.
# diff-cmd = diff_program (diff, gdiff, etc.)
diff-cmd =/home/knowsg_admin/bin/svndiffwrap.sh
|


But the script is right there with executing privileges:

|
~/knowsg.com/steps $ ll /home/knowsg_admin/bin
total 4.0K
-rwxr-xr-x 1knowsg_admin knowsg_admin 369Apr511:06svndiffwrap.sh*
|


Even its parent directory is on $PATH:
|
~/knowsg.com/steps $ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/knowsg_admin/bin
|


Can anybody help me with this please? Thanks.
You don't execute the svn command with a different use by any chance, do 
you?
Did you test putting the svndiffwrap.sh file somewhere else (for example 
into /var/)?


Regards,
Stefan


svn --diff-cmd not working

2016-04-07 Thread loudking
Dear all, I configured svn to call a wrapper script for diff command but 
encountered following error:

~/knowsg.com/steps $ svn diff command_at_development.txt
Index: command_at_development.txt
===
exec of '/home/knowsg_admin/bin/svndiffwrap.sh' failed: No such file or 
directorysvn: '/home/knowsg_admin/bin/svndiffwrap.sh' returned 255


part of ~/.subversion/config is like this:

### Set diff-cmd to the absolute path of your 'diff' program.
### This will override the compile-time default, which is to use
### Subversion's internal diff implementation.
# diff-cmd = diff_program (diff, gdiff, etc.)
diff-cmd = /home/knowsg_admin/bin/svndiffwrap.sh


But the script is right there with executing privileges:

~/knowsg.com/steps $ ll /home/knowsg_admin/bin
total 4.0K
-rwxr-xr-x 1 knowsg_admin knowsg_admin 369 Apr 5 11:06 svndiffwrap.sh*


Even its parent directory is on $PATH:
~/knowsg.com/steps $ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:
/sbin:/home/knowsg_admin/bin


Can anybody help me with this please? Thanks.


RFC: svn diff --diff-cmd cmd should check cmd earlier

2013-10-20 Thread Toralf Förster
If you made a typo in it and have a slow network connection to a remote
repo and decided to make a cup of coffee while the command will complete
- you'll be left out in the cold if you came back.

Or ?

-- 
MfG/Sincerely
Toralf Förster
pgp finger print: 7B1A 07F4 EC82 0F90 D4C2 8936 872A E508 7DB6 9DA3


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-27 Thread Daniel Shahaf
Michael Schlottke wrote on Wed, Jun 26, 2013 at 17:34:15 +0200:
 
 On Jun 21, 2013, at 15:23 , Philip Martin wrote:
  Another user raised the issue
  
  http://subversion.tigris.org/issues/show_bug.cgi?id=4382
  
  Using '--diff-cmd colordiff' to get coloured output no longer works.
  
  Here's a solution that requires the user to mark the command as
  requiring direct access.  Log and patch:
  
  Allow the user to bypass the temporary spool file when invoking an
  external diff command.  This allows commands that expect to see
  a terminal to work.  The user adds the prefix 'svn:direct:' to the
  command and Subversion passes the stream's file rather than creating
  a spool file.  So
  
--diff-cmd foo
  
  runs foo with a spool file and
  
--diff-cmd svn:direct:foo
  
  runs foo with the stream's file.
 
 I can confirm that your patch works for me (OS X Lion and Linux).
 Thanks for the quick fix! Keeping my fingers crossed that this will
 make it into the repository soon.
 

I believe http://svn.apache.org/r1497002 fixes this issue (without the
svn:direct: prefix), and is proposed for backport towards 1.8.1.

Daniel

 Michael
 




Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-26 Thread Michael Schlottke

On Jun 21, 2013, at 15:23 , Philip Martin wrote:
 Another user raised the issue
 
 http://subversion.tigris.org/issues/show_bug.cgi?id=4382
 
 Using '--diff-cmd colordiff' to get coloured output no longer works.
 
 Here's a solution that requires the user to mark the command as
 requiring direct access.  Log and patch:
 
 Allow the user to bypass the temporary spool file when invoking an
 external diff command.  This allows commands that expect to see
 a terminal to work.  The user adds the prefix 'svn:direct:' to the
 command and Subversion passes the stream's file rather than creating
 a spool file.  So
 
   --diff-cmd foo
 
 runs foo with a spool file and
 
   --diff-cmd svn:direct:foo
 
 runs foo with the stream's file.

I can confirm that your patch works for me (OS X Lion and Linux). Thanks for 
the quick fix! Keeping my fingers crossed that this will make it into the 
repository soon.

Michael



smime.p7s
Description: S/MIME cryptographic signature


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-21 Thread Philip Martin
Philip Martin philip.mar...@wandisco.com writes:

 It's also hard to fix 1.8, how do we pass the information into the
 client library without changing the API?  Perhaps we could recognise a
 special part of the command name or a special external parameter, so

--diff-cmd svn:interactive:myscript

Another user raised the issue

http://subversion.tigris.org/issues/show_bug.cgi?id=4382

Using '--diff-cmd colordiff' to get coloured output no longer works.

Here's a solution that requires the user to mark the command as
requiring direct access.  Log and patch:

Allow the user to bypass the temporary spool file when invoking an
external diff command.  This allows commands that expect to see
a terminal to work.  The user adds the prefix 'svn:direct:' to the
command and Subversion passes the stream's file rather than creating
a spool file.  So

   --diff-cmd foo

runs foo with a spool file and

   --diff-cmd svn:direct:foo

runs foo with the stream's file.


* subversion/include/private/svn_io_private.h
  (svn_stream__aprfile, svn_io__file_for_command_stream): New.

* subversion/libsvn_subr/io.c
  (svn_io__file_for_command_stream): New.

* subversion/libsvn_subr/stream.c
  (struct svn_stream_t): Add file member.
  (svn_stream_create, svn_stream_from_aprfile2): Set file member.
  (svn_stream__aprfile): New.

* subversion/libsvn_client/diff.c
  (diff_content_changed): Use svn_io__file_for_command_stream.

* subversion/svnlook/svnlook.c
  (print_diff_tree): Use svn_io__file_for_command_stream.

Index: subversion/include/private/svn_io_private.h
===
--- subversion/include/private/svn_io_private.h (revision 1495378)
+++ subversion/include/private/svn_io_private.h (working copy)
@@ -90,7 +90,29 @@ svn_stream__set_is_buffered(svn_stream_t *stream,
 svn_boolean_t
 svn_stream__is_buffered(svn_stream_t *stream);
 
+/** Return the underlying file, if any, associated with the stream, or
+ * NULL if not available.  Accessing the file bypasses the stream and
+ * should only be done when such bypass is acceptable.
+ */
+apr_file_t *
+svn_stream__aprfile(svn_stream_t *stream);
 
+/** Examine ORIG_COMMAND to determine whether it requests direct
+ * access to the file, if so then return STREAM's file in *FILE and set
+ * *FILENAME to NULL or return an error if the file is not available.
+ * Otherwise return a temporary file in *FILE and the filename in
+ * *FILENAME.  Return the true command in * *TRUE_COMMAND.
+ */
+svn_error_t *
+svn_io__file_for_command_stream(apr_file_t **file,
+const char **filename,
+const char **true_command,
+svn_stream_t *stream,
+const char *orig_command,
+apr_pool_t *result_pool,
+apr_pool_t *scratch_pool);
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
Index: subversion/libsvn_client/diff.c
===
--- subversion/libsvn_client/diff.c (revision 1495378)
+++ subversion/libsvn_client/diff.c (working copy)
@@ -51,6 +51,7 @@
 #include private/svn_wc_private.h
 #include private/svn_diff_private.h
 #include private/svn_subr_private.h
+#include private/svn_io_private.h
 
 #include svn_private_config.h
 
@@ -793,6 +794,7 @@ diff_content_changed(svn_boolean_t *wrote_header,
   const char *outfilename;
   const char *errfilename;
   svn_stream_t *stream;
+  const char *diff_cmd;
 
   /* Print out the diff header. */
   SVN_ERR(svn_stream_printf_from_utf8(outstream,
@@ -807,11 +809,13 @@ diff_content_changed(svn_boolean_t *wrote_header,
* ### a non-git compatible diff application.*/
 
   /* We deal in streams, but svn_io_run_diff2() deals in file handles,
- unfortunately, so we need to make these temporary files, and then
+ so we need to make these temporary files, and then
  copy the contents to our stream. */
-  SVN_ERR(svn_io_open_unique_file3(outfile, outfilename, NULL,
-   svn_io_file_del_on_pool_cleanup,
-   scratch_pool, scratch_pool));
+  SVN_ERR(svn_io__file_for_command_stream(outfile, outfilename,
+  diff_cmd, outstream,
+  diff_cmd_baton-diff_cmd,
+  scratch_pool, scratch_pool));
+
   SVN_ERR(svn_io_open_unique_file3(errfile, errfilename, NULL,
svn_io_file_del_on_pool_cleanup,
scratch_pool, scratch_pool));
@@ -822,17 +826,21 @@ diff_content_changed(svn_boolean_t *wrote_header,
label1, label2,
tmpfile1, tmpfile2,
exitcode, outfile

Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-19 Thread Michael Schlottke

On Jun 19, 2013, at 01:58 , Philip Martin wrote:

 [cc to dev]
 
 Michael Schlottke m.schlot...@aia.rwth-aachen.de writes:
 
 I just installed svn 1.8 on our cluster. Before, we used svn 1.7.9 and
 a little vimdiff wrapper (taken, with a few changes, from
 http://svnbook.red-bean.com/nightly/en/svn.advanced.externaldifftools.html#svn.advanced.externaldifftools.diff),
 which worked like a charm when called as svn diff
 --diff-cmd=diffwrap.py filename. However, with svn 1.8 something
 seems to have changed:
 
 The only lines I see after executing the command above are
 
 Index: filename
 ===
 
 and the terminal hangs. When I enter :qa!, I get the following line
 
 Vim: Warning: Output is not to a terminal
 
 and I am back in the terminal. I have not changed anything in the
 wrapper script, and indeed, when I manually use it with our old svn
 version (1.7.9), it still works. Does anyone have an idea what has
 changed in the way the diff-cmd is invoked? And, more importantly, how
 I can change the vimdiff wrapper so it works again?
 
 I invoked vimdiff using a diff-cmd of:
 
#!/bin/sh
vimdiff $6 $7

That's the exact same command I used.

 this works with 1.7 but fails as you describe in 1.8.
 
 The cause is the conversion of diff to the stream API. The code in
 libsvn_client/diff.c:diff_content_changed now gets a Subversion stream
 rather than an APR file for output so it does:
 
  /* We deal in streams, but svn_io_run_diff2() deals in file handles,
 unfortunately, so we need to make these temporary files, and then
 copy the contents to our stream. */
  SVN_ERR(svn_io_open_unique_file3(outfile, outfilename, NULL,
   svn_io_file_del_on_pool_cleanup,
   scratch_pool, scratch_pool));
 
 and this use of a temporary file prevents the use of an external diff
 that expects a terminal.
 
 The only way I see to fix this is to stop using the stream API when the
 external diff command wants a terminal.  I don't think it is possible to
 do this automatically, perhaps we need an --interactive-diff option?

Do you have an idea of how hard this is to achieve, or how long it would take 
to create a patch? I'd be happy to volunteer as a tester…
Or do you know of an interim hack that I could use until it is properly fixed?

We'd really love to use svn 1.8 (especially with the new merging capabilities), 
but this is a major hindrance.

Michael

--
Michael Schlottke

SimLab Highly Scalable Fluids  Solids Engineering
Jülich Aachen Research Alliance (JARA-HPC)
RWTH Aachen University
Wüllnerstraße 5a
52062 Aachen
Germany

Phone: +49 (241) 80 95188
Fax: +49 (241) 80 92257
Mail: m.schlot...@aia.rwth-aachen.de
Web: http://www.jara.org/jara-hpc



smime.p7s
Description: S/MIME cryptographic signature


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-19 Thread Ben Reser
On Wed, Jun 19, 2013 at 9:11 AM, Michael Schlottke
m.schlot...@aia.rwth-aachen.de wrote:
 Do you have an idea of how hard this is to achieve, or how long it would
 take to create a patch? I'd be happy to volunteer as a tester…
 Or do you know of an interim hack that I could use until it is properly
 fixed?

I don't imagine it'd take very long at all to implement but the
problem of course is that we really should think carefully how we go
about doing this.  If we can detect this at runtime we probably
should.

I'm not sure what platform you're on but using the GUI version of
vimdiff would get around this for you in the meantime.  You'll end up
with one vimdiff window per file.  On the Mac for instance all I did
was symlink mvimdiff to mvim (which is essentially equivalent to gvim
on other platforms) and then change the wrapper to use that instead of
vimdiff.  I realize it's not ideal but it should give you almost the
same functionality that you had before.


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-19 Thread Philip Martin
Ben Reser b...@reser.org writes:

 I don't imagine it'd take very long at all to implement but the
 problem of course is that we really should think carefully how we go
 about doing this.  If we can detect this at runtime we probably
 should.

I don't see how Subversion can determine that one script needs a
terminal while another can use a file, only the user knows that.

It's also hard to fix 1.8, how do we pass the information into the
client library without changing the API?  Perhaps we could recognise a
special part of the command name or a special external parameter, so

   --diff-cmd svn:interactive:myscript

or

   --diff-cmd myscript -x svn:interactive

gets a terminal while

   --diff-cmd myscript

gets a file. 

-- 
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data
www.wandisco.com


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-19 Thread Michael Schlottke

On Jun 19, 2013, at 09:56 , Ben Reser wrote:

 On Wed, Jun 19, 2013 at 9:11 AM, Michael Schlottke
 m.schlot...@aia.rwth-aachen.de wrote:
 Do you have an idea of how hard this is to achieve, or how long it would
 take to create a patch? I'd be happy to volunteer as a tester…
 Or do you know of an interim hack that I could use until it is properly
 fixed?
 
 I don't imagine it'd take very long at all to implement but the
 problem of course is that we really should think carefully how we go
 about doing this.  If we can detect this at runtime we probably
 should.

I fully agree that this should be done right, and preferably without adding 
complexity through additional flags. 
However, for now I'd prefer a quick-n-dirty solution rather than not being able 
to upgrade at all. I know this is
asking for quite something, especially since I don't know how to do it myself 
:-/

 I'm not sure what platform you're on but using the GUI version of
 vimdiff would get around this for you in the meantime.

Thanks for the tip! Unfortunately, gvim is not an option unfortunately, since 
most of the machines do not have a proper version
of gvim installed. 

Michael

smime.p7s
Description: S/MIME cryptographic signature


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-19 Thread Philip Martin
Michael Schlottke m.schlot...@aia.rwth-aachen.de writes:

 However, for now I'd prefer a quick-n-dirty solution rather than not
 being able to upgrade at all. I know this is asking for quite
 something, especially since I don't know how to do it myself :-/

Here's my really quick-n-dirty patch used during investigation.  It's
not going to be committed.  If it breaks you get to keep the pieces:

Index: subversion/libsvn_client/diff.c
===
--- subversion/libsvn_client/diff.c (revision 1494268)
+++ subversion/libsvn_client/diff.c (working copy)
@@ -816,13 +816,18 @@ diff_content_changed(svn_boolean_t *wrote_header,
svn_io_file_del_on_pool_cleanup,
scratch_pool, scratch_pool));
 
+  {
+apr_file_t *stdout_file;
+apr_file_open_stdout(stdout_file, scratch_pool);
+
   SVN_ERR(svn_io_run_diff2(.,
diff_cmd_baton-options.for_external.argv,
diff_cmd_baton-options.for_external.argc,
label1, label2,
tmpfile1, tmpfile2,
-   exitcode, outfile, errfile,
+   exitcode, stdout_file, errfile,
diff_cmd_baton-diff_cmd, scratch_pool));
+  }
 
   SVN_ERR(svn_io_file_close(outfile, scratch_pool));
   SVN_ERR(svn_io_file_close(errfile, scratch_pool));

-- 
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data
www.wandisco.com


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-19 Thread Philip Martin
Philip Martin philip.mar...@wandisco.com writes:

 Ben Reser b...@reser.org writes:

 I don't imagine it'd take very long at all to implement but the
 problem of course is that we really should think carefully how we go
 about doing this.  If we can detect this at runtime we probably
 should.

 I don't see how Subversion can determine that one script needs a
 terminal while another can use a file, only the user knows that.

 It's also hard to fix 1.8, how do we pass the information into the
 client library without changing the API?  Perhaps we could recognise a
 special part of the command name or a special external parameter, so

--diff-cmd svn:interactive:myscript

 or

--diff-cmd myscript -x svn:interactive

 gets a terminal while

--diff-cmd myscript

 gets a file. 

Or we could extend the opaque svn_stream_t to make the underlying
apr_file_t available.  Is mixing output to the file and output to
the stream acceptable or does it introduce output order problems?

Index: subversion/include/private/svn_io_private.h
===
--- subversion/include/private/svn_io_private.h (revision 1494268)
+++ subversion/include/private/svn_io_private.h (working copy)
@@ -90,7 +90,10 @@ svn_stream__set_is_buffered(svn_stream_t *stream,
 svn_boolean_t
 svn_stream__is_buffered(svn_stream_t *stream);
 
+apr_file_t *
+svn_stream__aprfile(svn_stream_t *stream);
 
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
Index: subversion/libsvn_client/diff.c
===
--- subversion/libsvn_client/diff.c (revision 1494268)
+++ subversion/libsvn_client/diff.c (working copy)
@@ -51,6 +51,7 @@
 #include private/svn_wc_private.h
 #include private/svn_diff_private.h
 #include private/svn_subr_private.h
+#include private/svn_io_private.h
 
 #include svn_private_config.h
 
@@ -809,13 +810,22 @@ diff_content_changed(svn_boolean_t *wrote_header,
   /* We deal in streams, but svn_io_run_diff2() deals in file handles,
  unfortunately, so we need to make these temporary files, and then
  copy the contents to our stream. */
-  SVN_ERR(svn_io_open_unique_file3(outfile, outfilename, NULL,
-   svn_io_file_del_on_pool_cleanup,
-   scratch_pool, scratch_pool));
-  SVN_ERR(svn_io_open_unique_file3(errfile, errfilename, NULL,
-   svn_io_file_del_on_pool_cleanup,
-   scratch_pool, scratch_pool));
+  outfile = svn_stream__aprfile(outstream);
+  if (!outfile)
+SVN_ERR(svn_io_open_unique_file3(outfile, outfilename, NULL,
+ svn_io_file_del_on_pool_cleanup,
+ scratch_pool, scratch_pool));
+  else
+outfilename = NULL;
 
+  errfile = svn_stream__aprfile(errstream);
+  if (!errfile)
+SVN_ERR(svn_io_open_unique_file3(errfile, errfilename, NULL,
+ svn_io_file_del_on_pool_cleanup,
+ scratch_pool, scratch_pool));
+  else
+errfilename = NULL;
+
   SVN_ERR(svn_io_run_diff2(.,
diff_cmd_baton-options.for_external.argv,
diff_cmd_baton-options.for_external.argc,
@@ -824,20 +834,28 @@ diff_content_changed(svn_boolean_t *wrote_header,
exitcode, outfile, errfile,
diff_cmd_baton-diff_cmd, scratch_pool));
 
-  SVN_ERR(svn_io_file_close(outfile, scratch_pool));
-  SVN_ERR(svn_io_file_close(errfile, scratch_pool));
+  if (outfilename)
+SVN_ERR(svn_io_file_close(outfile, scratch_pool));
+  if (errfilename)
+SVN_ERR(svn_io_file_close(errfile, scratch_pool));
 
   /* Now, open and copy our files to our output streams. */
-  SVN_ERR(svn_stream_open_readonly(stream, outfilename,
-   scratch_pool, scratch_pool));
-  SVN_ERR(svn_stream_copy3(stream, svn_stream_disown(outstream,
-   scratch_pool),
+  if (outfilename)
+{
+  SVN_ERR(svn_stream_open_readonly(stream, outfilename,
+   scratch_pool, scratch_pool));
+  SVN_ERR(svn_stream_copy3(stream, svn_stream_disown(outstream,
+ scratch_pool),
+   NULL, NULL, scratch_pool));
+}
+  if (errfilename)
+{
+  SVN_ERR(svn_stream_open_readonly(stream, errfilename,
+   scratch_pool, scratch_pool));
+  SVN_ERR(svn_stream_copy3(stream, svn_stream_disown(errstream,
+ scratch_pool

Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-19 Thread Michael Schlottke
On Jun 19, 2013, at 12:08 , Philip Martin wrote:

 Philip Martin philip.mar...@wandisco.com writes:
 
 Ben Reser b...@reser.org writes:
 
 I don't imagine it'd take very long at all to implement but the
 problem of course is that we really should think carefully how we go
 about doing this.  If we can detect this at runtime we probably
 should.
 
 I don't see how Subversion can determine that one script needs a
 terminal while another can use a file, only the user knows that.
 
 It's also hard to fix 1.8, how do we pass the information into the
 client library without changing the API?  Perhaps we could recognise a
 special part of the command name or a special external parameter, so
 
   --diff-cmd svn:interactive:myscript
 
 or
 
   --diff-cmd myscript -x svn:interactive
 
 gets a terminal while
 
   --diff-cmd myscript
 
 gets a file. 
 
 Or we could extend the opaque svn_stream_t to make the underlying
 apr_file_t available.  Is mixing output to the file and output to
 the stream acceptable or does it introduce output order problems?


I tried  installed both your patches and both work just fine, thank you very 
much.
Without giving it much thought, I now went for your second patch (it seemed to 
be the more sophisticated one).

I think something like the -x svn:interactive option would be the best 
solution, since that way the diff-cmd really
just remains a command.

Thank you very much for your quick help! I'll definitely keep tabs on the 
development of this, I hope that one way 
or another it will make it into the svn code base.

Michael

smime.p7s
Description: S/MIME cryptographic signature


vimdiff wrapper for diff-cmd not working with 1.8

2013-06-18 Thread Michael Schlottke
Hi there,

I just installed svn 1.8 on our cluster. Before, we used svn 1.7.9 and a little 
vimdiff wrapper (taken, with a few changes, from 
http://svnbook.red-bean.com/nightly/en/svn.advanced.externaldifftools.html#svn.advanced.externaldifftools.diff),
 which worked like a charm when called as svn diff --diff-cmd=diffwrap.py 
filename. However, with svn 1.8 something seems to have changed:

The only lines I see after executing the command above are

 Index: filename
 ===

and the terminal hangs. When I enter :qa!, I get the following line

 Vim: Warning: Output is not to a terminal

and I am back in the terminal. I have not changed anything in the wrapper 
script, and indeed, when I manually use it with our old svn version (1.7.9), it 
still works. Does anyone have an idea what has changed in the way the diff-cmd 
is invoked? And, more importantly, how I can change the vimdiff wrapper so it 
works again?

Regards,

Michael

--
Michael Schlottke

SimLab Highly Scalable Fluids  Solids Engineering
Jülich Aachen Research Alliance (JARA-HPC)
RWTH Aachen University
Wüllnerstraße 5a
52062 Aachen
Germany

Phone: +49 (241) 80 95188
Fax: +49 (241) 80 92257
Mail: m.schlot...@aia.rwth-aachen.de
Web: http://www.jara.org/jara-hpc



smime.p7s
Description: S/MIME cryptographic signature


Re: vimdiff wrapper for diff-cmd not working with 1.8

2013-06-18 Thread Philip Martin
[cc to dev]

Michael Schlottke m.schlot...@aia.rwth-aachen.de writes:

 I just installed svn 1.8 on our cluster. Before, we used svn 1.7.9 and
 a little vimdiff wrapper (taken, with a few changes, from
 http://svnbook.red-bean.com/nightly/en/svn.advanced.externaldifftools.html#svn.advanced.externaldifftools.diff),
 which worked like a charm when called as svn diff
 --diff-cmd=diffwrap.py filename. However, with svn 1.8 something
 seems to have changed:

 The only lines I see after executing the command above are

 Index: filename
 ===

 and the terminal hangs. When I enter :qa!, I get the following line

 Vim: Warning: Output is not to a terminal

 and I am back in the terminal. I have not changed anything in the
 wrapper script, and indeed, when I manually use it with our old svn
 version (1.7.9), it still works. Does anyone have an idea what has
 changed in the way the diff-cmd is invoked? And, more importantly, how
 I can change the vimdiff wrapper so it works again?

I invoked vimdiff using a diff-cmd of:

#!/bin/sh
vimdiff $6 $7

this works with 1.7 but fails as you describe in 1.8.

The cause is the conversion of diff to the stream API. The code in
libsvn_client/diff.c:diff_content_changed now gets a Subversion stream
rather than an APR file for output so it does:

  /* We deal in streams, but svn_io_run_diff2() deals in file handles,
 unfortunately, so we need to make these temporary files, and then
 copy the contents to our stream. */
  SVN_ERR(svn_io_open_unique_file3(outfile, outfilename, NULL,
   svn_io_file_del_on_pool_cleanup,
   scratch_pool, scratch_pool));

and this use of a temporary file prevents the use of an external diff
that expects a terminal.

The only way I see to fix this is to stop using the stream API when the
external diff command wants a terminal.  I don't think it is possible to
do this automatically, perhaps we need an --interactive-diff option?

-- 
Philip Martin | Subversion Committer
WANdisco | Non-Stop Data
www.wandisco.com


Re: diff-cmd =

2011-02-11 Thread Stefan Sperling
On Fri, Feb 11, 2011 at 12:13:36PM +0600, Victor Sudakov wrote:
 Ryan Schmidt wrote:
 [dd]
 
  
  This looks like http://subversion.tigris.org/issues/show_bug.cgi?id=2930
  
  i.e., you've found the current status quo; there is no better method 
  currently available.
  
 
 I have always been told that I am a good tester (i.e. have the
 ability to come across bugs), but my rate of tripping on all the
 subversion rakes is alarming.

This isn't particularly hard to fix, so it's an ideal problem
for new contributors. This may be one reason why it hasn't been fixed yet.
In the big picture, it doesn't hurt to let little problems like this linger.
Most people will just write a wrapper script and move on. Too bad.
But someone will eventually be looking for things to get their feet wet,
and issues like this are ideal for that. Or it will annoy someone so
much that they take the time to fix it.
The existing developers have much harder sets of problems to juggle.
And yes, of course, sometimes existing developers find time to fix simple
problems like this. However we have a strong culture of encouraging new
contributors so having issues like this open is also a good thing for
the project. So, take the plunge if you can! Thanks.


diff-cmd =

2011-02-10 Thread Victor Sudakov
Colleagues,

I like very much the default output of the FreeBSD diff program.
So I prefer using svn diff --diff-cmd=/usr/bin/diff -x --normal
instead of just svn diff.

However, when I put the line diff-cmd = /usr/bin/diff -x --normal
into ~/.subversion/config, I get the following error message:

exec of '/usr/bin/diff -x --normal' failed: No such file or directorysvn: 
'/usr/bin/diff -x --normal' returned 255

I guess it is trying to exec '/usr/bin/diff -x --normal' as a whole
which is kind of expected. 

For the present, I have created a shell alias for the svn diff
command, but I am curious what the correct ~/.subversion/config syntax
is to achieve what I want?

-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
sip:suda...@sibptus.tomsk.ru


Re: diff-cmd =

2011-02-10 Thread Ryan Schmidt

On Feb 10, 2011, at 23:33, Victor Sudakov wrote:

 I like very much the default output of the FreeBSD diff program.
 So I prefer using svn diff --diff-cmd=/usr/bin/diff -x --normal
 instead of just svn diff.
 
 However, when I put the line diff-cmd = /usr/bin/diff -x --normal
 into ~/.subversion/config, I get the following error message:
 
 exec of '/usr/bin/diff -x --normal' failed: No such file or directorysvn: 
 '/usr/bin/diff -x --normal' returned 255
 
 I guess it is trying to exec '/usr/bin/diff -x --normal' as a whole
 which is kind of expected. 
 
 For the present, I have created a shell alias for the svn diff
 command, but I am curious what the correct ~/.subversion/config syntax
 is to achieve what I want?

This looks like http://subversion.tigris.org/issues/show_bug.cgi?id=2930

i.e., you've found the current status quo; there is no better method currently 
available.




Re: diff-cmd =

2011-02-10 Thread Victor Sudakov
Ryan Schmidt wrote:
[dd]

 
 This looks like http://subversion.tigris.org/issues/show_bug.cgi?id=2930
 
 i.e., you've found the current status quo; there is no better method 
 currently available.
 

I have always been told that I am a good tester (i.e. have the
ability to come across bugs), but my rate of tripping on all the
subversion rakes is alarming.

-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
sip:suda...@sibptus.tomsk.ru


Re: svn diff --diff-cmd diff -r PREV doesn't work subversion repo of nmap

2010-03-13 Thread Ryan Schmidt

On Mar 12, 2010, at 20:27, Andy Levy wrote:

 I just ran the exact sequence in your bug report on OS X 10.6.2 and it
 executed cleanly using SVN 1.6.5. I don't have 1.6.9 handy  I'm not
 sure what I need to do to get it installed; I think I'm missing some
 dev tools.

One way to get it is to use MacPorts.

1. Download Xcode from Apple's web site and install
2. Download MacPorts from the MacPorts web site and install
3. Run sudo port install subversion in the Terminal

[1] http://developer.apple.com/technologies/xcode.html

[2] http://www.macports.org/install.php




Re: svn diff --diff-cmd diff -r PREV doesn't work subversion repo of nmap

2010-03-12 Thread Toralf Förster

Andy Levy wrote at 22:31:19
 Since Subversion is returning
 
svn: Process 'diff' failed (exitwhy 2)
 
 Isn't it possible that it's a problem with diff?
No, this issue happens with every other diff command/wrapper I used
(eg. $ svn diff --diff-cmd echo -r PREV)

It happens only within the subversion directory of nmap (which was freshly 
checked out, no local commits /edits were done). This issue do not happens in 
any other local repository. The only difference which I can see is that the 
nmap repo contains external items.

-- 
MfG/Sincerely
Toralf Förster

pgp finger print: 7B1A 07F4 EC82 0F90 D4C2 8936 872A E508 7DB6 9DA3