pburba in subversion

* STATUS: Vote and approve r1499470 group.

* STATUS: Nominate r1496110.

Avoid a segfault in svn_client_log5, see

* subversion/libsvn_client/log.c

(run_ra_get_log): bsearch can return NULL, so handle that.

Follow-up to r1480412: Unbreak the Ruby binding tests with out-of-tree



* subversion/bindings/swig/ruby/test/util.rb

(util.rb): Adjust requirement of ../svn/util.rb so it works with Ruby 1.8

or 1.9 and when the CWD is not the parent of the required file.

* STATUS: Nominate r1490679.

Follow-up to r1464416, fix minor error which occurs during ra_serf test

setup in a clean build environment:

C:\SVN\src-branch-1.8.x-2> -r -f bdb --httpd-dir C:\Apache22

--httpd-port 7829 -u -c

Adding password for user jrandom

Adding password for user jconstant

Traceback (most recent call last):

File "C:\SVN\src-branch-1.8.x-2\", line 736, in <module>


File "C:\SVN\src-branch-1.8.x-2\", line 498, in __init__


File "C:\SVN\src-branch-1.8.x-2\", line 603, in


fp = open(self.dontdothat_file, 'w')

IOError: [Errno 2] No such file or directory:



Httpd.stop_daemon not implemented


(Httpd._create_dontdothat_file): Don't assume the 'svn-test-work' directory

already exists, it won't if you are running the tests for the first time

in a given environment.

* STATUS: Vote and approve r1489203.

* STATUS: Correct the nominated revision for the issue #4370 fix.

* STATUS: Nominated issue #4370 '(m)erge interactive conflict resolution

segfaults when cwd not parent of target' fix.

Fix issue #4370 '(m)erge interactive conflict resolution segfaults when

cwd not parent of target'.

* subversion/svn/file-merge.c

(svn_cl__merge_file): Don't assume WC_PATH and MERGED_PATH args are

subtrees of the PATH_PREFIX arg. This would not be the case if, for

example, the target of an 'svn up' command was an absolute path which

is not a child of the current working directory.

* STATUS: Add r1486931 to r1480344 group.

* subversion/bindings/swig/ruby/test/windows_util.rb

(SvnTestUtil.Windows.Svnserve.setup_svnserve): If a path in the PATH

environment variable doesn't exist, then in addition to ignoring the

ENOENT error when we try to change the cwd to the non-existent path, jump

to the next iteration of the loop. Previously we rescued the error, but

continued with the loop, looking for binaries in the prior valid cwd.

Found by: danielsh

* STATUS: Cast a slew of votes.

* STATUS: Nominate the issue #4367 test and fix.

Fix issue #4367 'merge to shallow WC, repeat merge to infinite depth WC is


* subversion/libsvn_client/merge.c


merge_dir_added): A merge may be broken into multiple editor drives.

One drive may add a directory and then a later one might delete it. So

don't assume the copy from revision (which must always exist for a merge)

on an added directory is dictated by the larger merge source, use the

(possibly different) revision from the editor drive.

* subversion/tests/cmdline/

(merge_to_empty_target_merge_to_infinite_target): Remove XFail decorator.

Minor correction to test for issue #4367 'merge to shallow WC, repeat merge

to infinite depth WC is broken'.

* subversion/tests/cmdline/

(merge_to_empty_target_merge_to_infinite_target): Adjust the expected

output of the final merge to use the new "prev_status" for a path that

is notified twice -- i.e. it's added on the first editor drive and

deleted on the second drive.

Revise test for issue #4367 'merge to shallow WC, repeat merge to infinite

depth WC is broken'.

* subversion/tests/cmdline/

(merge_to_empty_target_merge_to_infinite_target): Revise the test to

mimic the user reported bug described here,, rather than the "bug"

described in, which

isn't a bug at all (as discussed here

Add a test for issue #4367 'merge to shallow WC, repeat merge to infinite

depth WC is broken'.

* subversion/tests/cmdline/

(merge_to_empty_target_merge_to_infinite_target): New XFailing test.

(test_list): Add merge_to_empty_target_merge_to_infinite_target.

* STATUS: Nominate a slew of Ruby 1.9 and Ruby-Bindings-on-Windows fixes.

Follow-up to r1298434 and r1298465, fix the long broken Ruby binding tests

on Windows.

Previously, when setting up the test sandbox, we tried to import from a

temporary path, which correctly contained the Greek tree to import, but

also contained the WC and repository. The latter led to these types of

errors as we tried to import the repository into itself:

Svn::Error::SvnError: 720033: Can't read file


orevs\0-0.rev-lock': The process cannot access the file because another

process has locked a portion of the file.



C:/SVN/src-trunk/subversion/bindings/swig/ruby/svn/util.rb:99:in `import3'

C:/SVN/src-trunk/subversion/bindings/swig/ruby/svn/client.rb:232:in `import'











* subversion/bindings/swig/ruby/test/greek_tree.rb

(SvnTestUtil.Greek.initialize): Add import_path parameter and assign to a

class variable.

(SvnTestUtil.Greek.setup): Use new import_path class variable as the source

for imports, rather than the tmp_path class variable, which also contains

the WC and repository.

* subversion/bindings/swig/ruby/test/test_client.rb


SvnClientTest.test_import_custom_revprops): Create a dedicated import

directory as a child directory of the class variable tmp_path, rather

than using tmp_path itself -- again, that contains the WC and repository.

* subversion/bindings/swig/ruby/test/util.rb

(SvnTestUtil.setup_default_variables): Remove unused class variable. Add

a dedicated class variable which is a sibling of the WC and repos paths,

rather than their parent.

(SvnTestUtil.setup_basic): Setup the new import path.

* subversion/bindings/swig/ruby/test/windows_util.rb

(SvnTestUtil.Windows.Svnserve.setup_svnserve): Allow Ruby binding tests to

run on Windows with static builds of svnserve.exe.

* subversion/bindings/swig/ruby/test/windows_util.rb

(SvnTestUtil.Windows.Svnserve.setup_svnserve): Allow Ruby binding tests to

run with BDB versions other than 4.4. Also remove some commented debug

cruft from r1482479.

* subversion/bindings/swig/ruby/test/windows_util.rb

(SvnTestUtil.Windows.Svnserve.setup_svnserve): Rescue an Errno::EACCES

error, sleep, and attempt a few retries in an attempt to avoid a

spurious failure in the Ruby binding tests on Windows.

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h

(ruby/io.h): Include the appropriate Ruby header if using Ruby 1.9 and

thus avoid the 'use "ruby/io.h" instead of "rubyio.h"' warning.

Another Ruby 1.9 fix for Windows.

* subversion/bindings/swig/ruby/test/windows_util.rb

(SvnTestUtil.Windows.SetupEnvironment.gen_make_opts): String objects in 1.9

no longer have the to_a method, so use a workaround that works for both

1.9 and 1.8.

* STATUS: Add r1478998 and r1480723 to issue #4355 group.

More cleanup to issue #4355 'svn_client_log5 broken with multiple

revisions which span a rename' fix in r1478220.

Suggested by: cmpilato


* subversion/libsvn_client/log.c

(svn_client_log5): Fix typo in doc string. We know what size the output

array will be, so just initialize it to that size. Remove an unnecessary


(convert_opt_rev_array_to_rev_range_array): Replace memcmp comparison of

two structures with proper member-wise comparison.

(find_youngest_and_oldest_revs): Remove unecessary return statement.

Follow-up to r1442063: Fix broken ruby bindings build on Windows.

r1442063 turned the Windows compiler warning C4204 "nonstandard extension

used : non-constant aggregate initializer" into an error. The Ruby bindings

uses a few such offending initializers and thus needs some minor tweaks to

be built again.

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c



invoke_callback): Declare and initialize arrays/structs in separate


Ruby 1.9 compatibility fix.

* subversion/bindings/swig/ruby/test/util.rb

(util.rb): Explicitly state that the cwd should be searched

when requiring "svn/util". Ruby 1.9 no longer includes the cwd in the

load path.

Properly detect Ruby 1.9 on Windows.

* build/generator/

(WinGeneratorBase._find_ruby): Pass the -W0 option to ruby.exe to stifle

the warning about Config being deprecated and that RbConfig should be

used. Ruby just uses RbConfig anyway.