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