Michael Kefeder mike@weird-birds.org writes:
Hi
In the end i tracked it down to the diff -L flag viewcvs uses to label
the temporary files. viewcvs creates a label string that looks like
Filename\tdate\trevision. And that label (at least on my machine
with diff 2.7.2) causes trouble.
The reason lies either in viewcvs or in subversions python
bindings.
I made the bindings use that type of label because that's what rcsdiff
uses for CVS stuffs. And ViewCVS works fine for CVS files with
spaces.
Where i'd like to vote for the svn-bindings. Because i think there's
a flaw within fs.py in FileDiff::get_pipe(). The diffoptions (passed
to FileDiff constructor) are string.split() which can result into
strange behaviour because split() uses all whitespace characters for
splitting if not told otherwise.
Ah...looks like Greg Stein busted this when he converted to popen2 in
revision 4343 (strangely enough because he claimed it fixed diffs on
files with spaces in them). Greg, can you help out a bit here?
Various updates to the FileDiff class.
* bindings/swig/python/svn/fs.py:
(FileDiff.either_binary): new method to detect whether either file
is a binary file, thus indicating whether the diff should be skipped
(FileDiff.get_pipe): use a list for the diff command, along with the
popen2 module (rather than os.popen). this avoids the shell for
security purposes, and allows spaces in file names.
(FileDiff.__del__): ignore errors while trying to remove the files.
One workaround i can think of is using a non-whitespace
param-string-separator (like | but that is a bit clumsy)
Nono. It just makes sense to have the output remain consistent with
rcsdiff's. We just need the right magic to do it.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 14 02:19:43 2006