Author: stefan2
Date: Wed Nov 19 14:37:04 2014
New Revision: 1640562

URL: http://svn.apache.org/r1640562
Log:
On the 1.8.x-r1536854 branch: Sync with 1.8.x up to r1640560. No conflicts.

Added:
    subversion/branches/1.8.x-r1536854/subversion/include/private/svn_cert.h
      - copied unchanged from r1640560, 
subversion/branches/1.8.x/subversion/include/private/svn_cert.h
Modified:
    subversion/branches/1.8.x-r1536854/   (props changed)
    subversion/branches/1.8.x-r1536854/CHANGES   (contents, props changed)
    subversion/branches/1.8.x-r1536854/NOTICE
    subversion/branches/1.8.x-r1536854/STATUS
    subversion/branches/1.8.x-r1536854/build.conf
    subversion/branches/1.8.x-r1536854/build/ac-macros/apache.m4
    subversion/branches/1.8.x-r1536854/build/ac-macros/berkeley-db.m4
    subversion/branches/1.8.x-r1536854/build/ac-macros/compiler.m4
    subversion/branches/1.8.x-r1536854/build/ac-macros/serf.m4
    subversion/branches/1.8.x-r1536854/build/generator/gen_win.py
    subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_sln.ezt
    
subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_vcproj.ezt
    subversion/branches/1.8.x-r1536854/configure.ac   (contents, props changed)
    subversion/branches/1.8.x-r1536854/get-deps.sh
    
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.cpp
    
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.h
    
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/python/tests/client.py
    
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
    
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/test/test_client.rb
    subversion/branches/1.8.x-r1536854/subversion/bindings/swig/svn_client.i
    subversion/branches/1.8.x-r1536854/subversion/include/private/svn_cache.h
    
subversion/branches/1.8.x-r1536854/subversion/include/private/svn_dep_compat.h
    subversion/branches/1.8.x-r1536854/subversion/include/svn_io.h
    subversion/branches/1.8.x-r1536854/subversion/include/svn_version.h
    subversion/branches/1.8.x-r1536854/subversion/libsvn_client/commit_util.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_client/delete.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_client/export.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_client/externals.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_client/merge.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_client/prop_commands.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_delta/svndiff.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_diff/parse-diff.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_fs_fs/caching.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_fs_fs/fs.h
    subversion/branches/1.8.x-r1536854/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_ra_serf/commit.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_ra_serf/getlocks.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_ra_serf/locks.c   
(contents, props changed)
    subversion/branches/1.8.x-r1536854/subversion/libsvn_ra_serf/options.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_ra_serf/update.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_ra_serf/util.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_ra_svn/protocol
    subversion/branches/1.8.x-r1536854/subversion/libsvn_repos/fs-wrap.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_repos/load-fs-vtable.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/cache-memcache.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/config_auth.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/config_file.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/dirent_uri.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/io.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/opt.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/prompt.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_subr/version.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_wc/status.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_wc/wc-queries.sql
    subversion/branches/1.8.x-r1536854/subversion/libsvn_wc/wc_db.c
    subversion/branches/1.8.x-r1536854/subversion/libsvn_wc/wc_db.h
    subversion/branches/1.8.x-r1536854/subversion/mod_dav_svn/lock.c
    subversion/branches/1.8.x-r1536854/subversion/mod_dav_svn/repos.c
    subversion/branches/1.8.x-r1536854/subversion/po/de.po
    subversion/branches/1.8.x-r1536854/subversion/po/es.po
    subversion/branches/1.8.x-r1536854/subversion/po/fr.po
    subversion/branches/1.8.x-r1536854/subversion/po/it.po
    subversion/branches/1.8.x-r1536854/subversion/po/ja.po
    subversion/branches/1.8.x-r1536854/subversion/po/ko.po
    subversion/branches/1.8.x-r1536854/subversion/po/nb.po
    subversion/branches/1.8.x-r1536854/subversion/po/pl.po
    subversion/branches/1.8.x-r1536854/subversion/po/pt_BR.po
    subversion/branches/1.8.x-r1536854/subversion/po/zh_CN.po
    subversion/branches/1.8.x-r1536854/subversion/po/zh_TW.po
    subversion/branches/1.8.x-r1536854/subversion/svn/conflict-callbacks.c
    subversion/branches/1.8.x-r1536854/subversion/svn/svn.c   (props changed)
    subversion/branches/1.8.x-r1536854/subversion/svndumpfilter/svndumpfilter.c
    subversion/branches/1.8.x-r1536854/subversion/svnrdump/util.c
    subversion/branches/1.8.x-r1536854/subversion/svnserve/serve.c
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/commit_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/copy_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/export_tests.py
    
subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/externals_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/lock_tests.py
    
subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/merge_automatic_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/merge_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/move_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/prop_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/stat_tests.py
    
subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/svndumpfilter_tests.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/svntest/main.py
    subversion/branches/1.8.x-r1536854/subversion/tests/cmdline/wc_tests.py
    
subversion/branches/1.8.x-r1536854/subversion/tests/libsvn_diff/parse-diff-test.c
    
subversion/branches/1.8.x-r1536854/subversion/tests/libsvn_fs_fs/fs-pack-test.c
    
subversion/branches/1.8.x-r1536854/subversion/tests/libsvn_subr/dirent_uri-test.c
    
subversion/branches/1.8.x-r1536854/subversion/tests/libsvn_wc/conflict-data-test.c
    
subversion/branches/1.8.x-r1536854/subversion/tests/libsvn_wc/op-depth-test.c
    subversion/branches/1.8.x-r1536854/subversion/tests/libsvn_wc/utils.c
    subversion/branches/1.8.x-r1536854/subversion/tests/libsvn_wc/utils.h
    
subversion/branches/1.8.x-r1536854/tools/server-side/mod_dontdothat/mod_dontdothat.c
   (props changed)

Propchange: subversion/branches/1.8.x-r1536854/
------------------------------------------------------------------------------
  Merged /subversion/branches/1.8.x-r1579588:r1579589-1591112
  Merged /subversion/branches/1.8.x-VS2013-14:r1603404-1615199
  Merged /subversion/branches/1.8.x-issue4437:r1567249-1591140
  Merged /subversion/branches/1.8.x-r1578311:r1578312-1589576
  Merged /subversion/branches/1.8.x-r1584342:r1584350-1589572
  Merged /subversion/branches/1.8.x-r1536931:r1536934-1591145
  Merged /subversion/branches/1.8.x-r1577151:r1589064-1589574
  Merged /subversion/branches/1.8.x-r1581305:r1581320-1582587
  Merged /subversion/branches/1.8.x:r1579944-1640560
  Merged /subversion/branches/1.8.x-javahl-exception-crash:r1586424-1588151
  Merged 
/subversion/trunk:r1481782,1518942,1531014,1532316,1536350,1536383,1536464,1536488,1536914,1536931,1538812,1538925,1538928,1538939,1543594,1544597,1544600,1544688,1544690,1545111,1545122,1545835,1545845,1547454,1550691,1550772,1552957-1552958,1553501,1553556,1555403,1559197,1561426,1561703,1565531,1566503-1566504,1567204,1567228,1568349,1568361,1569069,1570642,1571747,1571787,1571795,1572340,1573106,1573209,1575525,1575915,1577151,1577200,1577294,1577739,1577755,1577812-1577813,1578273,1578311,1578326,1578670,1578820,1578853,1578875,1579274,1579429,1579588,1579684,1580626,1580650,1580832,1580867,1580872,1581296,1581305,1581315,1581430,1581810,1583580,1583977,1584342,1584576,1584592,1584745,1585686,1586052,1586255,1586352,1586467,1587511,1587946,1587968,1588772,1588778,1589184,1589188,1589460,1589486,1590212,1591123,1592014,1592034,1593992,1594156,1594223,1594794,1594814,1594834,1595061,1595431,1596866,1600311,1600315,1600323,1600393,1600909,1601851,1606009,1612225,1615211,16
 
15219,1615255-1615256,1615260,1615263,1616131,1619105,1619118,1619153,1619774,1619802,1636874
  Merged 
/subversion/branches/1.8.x-r1580626:r1580631,1580652,1580661,1581435,1588382-1591134
  Merged /subversion/branches/1.8.x-serf-no-lock-support:r1584583-1591109
  Merged /subversion/branches/1.8.x-rm-external-dir:r1600632-1615197
  Merged /subversion/branches/1.8.x-r1577812:r1577814-1588145
  Merged /subversion/branches/1.8.x-r1619774:r1626728-1640478
  Merged /subversion/branches/1.8.x-r1578853:r1578879-1581682
  Merged /subversion/branches/1.8.x-issue4480:r1588773-1591136
  Merged /subversion/branches/1.8.x-r1594223:r1594224-1606975
  Merged /subversion/branches/1.8.x-r1544597:r1564547-1591149
  Merged /subversion/branches/1.8.x-apr-0.9:r1585493-1589570
  Merged /subversion/branches/1.8.x-r1561426:r1561547-1640480

Modified: subversion/branches/1.8.x-r1536854/CHANGES
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/CHANGES?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/CHANGES (original)
+++ subversion/branches/1.8.x-r1536854/CHANGES Wed Nov 19 14:37:04 2014
@@ -1,3 +1,112 @@
+Version 1.8.10
+(11 Aug 2014, from /branches/1.8.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.8.10
+
+ User-visible changes:
+  - Client-side bugfixes:
+    * guard against md5 hash collisions when finding cached credentials
+        (r1550691, r1550772, r1600909)
+    * ra_serf: properly match wildcards in SSL certs. (r1615211, 1615219)
+    * ra_serf: ignore the CommonName in SSL certs where there are Subject Alt
+        Names (r1565531, r1566503, r1568349, r1568361)
+    * ra_serf: fix a URI escaping bug that prevented deleting locked paths
+        (r1594223, r1553501, r1553556, r1559197, issue #3674)
+    * rm: Display the proper URL when deleting a URL in the commit log editor
+        (r1591123)
+    * log: Fix another instance of broken pipe error (r1596866, issue #3014)
+    * copy: Properly handle props not present or excluded on cross wc copy
+        (r1589184, r1589188)
+    * copy: Fix copying parents of locally deleted nodes between wcs
+        (r1589460, r1589486)
+    * externals: Properly delete ancestor directories of externals when
+        removing the external by changing svn:externals. (r1600311, 1600315,
+        r1600323, r1600393)
+    * ra_serf: fix memory lifetime of some hash values (r1606009)
+
+  - Server-side bugfixes:
+    * fsfs: omit config file when creating pre-1.5 format repos (r1547454,
+        r1561703)
+
+ Developer-visible changes:
+  - General:
+    * fix improper linking when serf is in the same prefix as existing svn
+        libraries. (r1609004)
+    * use proper intermediate directory when building with VS 2003-2008
+        (r1595431)
+    * support generating VS 2013 and later project files.
+
+  - Bindings:
+    * ruby: removing warning about Ruby 1.9 support being new. (r1593992)
+    * python: fix notify_func callbacks (r1594794, r1594814, r1594834, 
r1595061)
+
+
+Version 1.8.9
+(07 May 2014, from /branches/1.8.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.8.9
+
+ User-visible changes:
+  - Client-side bugfixes:
+    * log: use proper peg revision over DAV (r1568872)
+    * upgrade: allow upgrading from 1.7 with exclusive locks (r1572102 et al)
+    * proplist: resolve inconsitent inherited property results (r1575270 et al)
+    * increase minimal timestamp sleep from 1ms to 10ms (r1581305 et al)
+    * merge: automatic merge confused by subtree merge (issue #4481)
+    * propget: report proper error on invalid revision for url (r1586255)
+    * commit: fix an assertion when committing a deleted descendant
+      (r1571747, r1571787, r1571795)
+    * merge: resolve segfault when '--force' merges a directory delete
+      (r1577812, r1577813, r1579429)
+    * resolve: prevent interactive conflict resolution when nothing has been
+      done to resolve the conflict (r1577294)
+    * update: fix locks lost from wc with pre-1.6.17 servers (issue #4412)
+    * merge: honor the 'preserved-conflict-file-exts' setting (r1577151)
+    * list: fix '--verbose' against older servers (r1591111)
+    * unlock: fix ability to remove locks with timeouts (r1579588)
+    * copy: fix 'svn copy URL WC' on relocated working copies
+      (r1580626, r1580650)
+    * export: allow file externals to be exported (issue #4427)
+    * move: fix working copy db inconsistency in cert scenarios (issue #4437)
+    * commit: fix an issue where mixed revision copy with non copy descendants
+      that shadow a not present node couldn't be committed (r1518942 et al)
+    * delete: properly remove move_to info when the node in its original
+      location is removed (r1538812 et al)
+    * status; fix an issue where output would vary based on if the target
+      was the node itself or its parent (r1544597 et al)
+
+  - Server-side bugfixes:
+    * ensure proper access synchronization in fsfs on Windows (r1568953 et al)
+    * svnadmin dump: don't let invalid mergeinfo stop dump (r1574868 et al)
+    * svnserve: resolve performance regression caused by iprops (r1578853 et 
al)
+    * reduce size of memory buffer when reading config files (r1581296)
+    * remove dead transaction if commit was blocked by hook (r1583977)
+    * svnrdump load: fix crash when svn:* normalization (issue #4490)
+    * fix memcached support (issue #4470)
+    * svndumpfilter: fix order of node record headers (r1578670 et al)
+    * mod_dav_svn: blacklist building with broken versions of httpd; 2.2.25,
+      2.4.5 and 2.4.6 (r1545835)
+    * mod_dav_svn: allow generic DAV clients to refresh locks (issue #3515)
+    * mod_dav_svn: detect out of dateness correctly during commit (issue #4480)
+
+ Developer-visible changes:
+  - General:
+    * improve consistency checks of DAV inherited property requests (r1498000)
+    * fix ocassional failure in autoprop_tests.py (r1567752)
+    * avoid duplicate sqlite analyze information rows (r1571214)
+    * add Mavericks to our sysinfo output (r1573088)
+    * bump copyright years to 2014 (r1555403)
+    * unbreak test suite when running as root (r1583580)
+    * resolve buffer overflow in testcode (r1481782)
+    * fix libmagic detection with custom LDFLAGS (r1577200)
+    * fix an out of scope variable use in merge (r1587946)
+    * javahl: fix crash from resolve callback throwing an exception (r1586439)
+    * ruby: fix two memory lifetime bugs (r1586052, r1586467)
+    * fix a missing null byte when handling old pre-1.4 deltas (r1587968)
+    * fix building with APR 0.9.x (r1585499)
+    * make svn_ra_get_locks() and svn_ra_get_lock() report not locked nodes
+      with a NULL svn_lock_t *, as documented (r1578273, r1578311, r1578326)
+    * fix tests for compiler flags (r1573106)
+
+
 Version 1.8.8
 (19 Feb 2014, from /branches/1.8.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.8.8
@@ -620,9 +729,54 @@ http://svn.apache.org/repos/asf/subversi
     * fix some reference counting bugs in swig-py bindings (r1464899, r1466524)
 
 
-Version 1.7.15
-(12 Feb 2014, from /branches/1.7.x)
-http://svn.apache.org/repos/asf/subversion/tags/1.7.15
+Version 1.7.18
+(11 Aug 2014, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.18
+
+ User-visible changes:
+  - Client-side bugfixes:
+    * guard against md5 hash collisions when finding cached credentials
+        (r1550691, r1550772, r1600909)
+    * ra_serf: properly match wildcards in SSL certs. (r1615211, 1615219)
+    * ra_serf: ignore the CommonName in SSL certs where there are Subject Alt
+        Names (r1565531, r1566503, r1568349)
+
+ Developer-visible changes:
+  - General:
+    * fix ocassional failure in checkout_tests.py test 12. (r1496127)
+    * disable building ZLib's assembly optimizations on Windows.
+
+
+Version 1.7.17
+(07 May 2014, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.17
+
+ User-visible changes:
+  - Client-side bugfixes:
+    * log: use proper peg revision over DAV (r1568872)
+    * move: fix errors when moving files between an external and the parent
+      working copy (r1551579)
+    * copy: fix 'svn copy URL WC' on relocated working copies
+      (r1580626, r1580650)
+
+  - Server-side bugfixes:
+    * mod_dav_svn: blacklist building with broken versions of httpd; 2.2.25,
+      2.4.5 and 2.4.6 (r1545835)
+    * mod_dav_svn: detect out of dateness correctly during commit (issue #4480)
+
+ Developer-visible changes:
+  - General:
+    * fix libmagic detection with custom LDFLAGS (r1577200)
+    * fix a missing null byte when handling old pre-1.4 deltas (r1587968)
+    * support building with Serf 1.3.x (r1517123, r1535139)
+
+  - Bindings:
+    * javahl: fix crash from resolve callback throwing an exception (r1586439)
+
+
+Version 1.7.16
+(26 Feb 2014, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.16
 
  User-visible changes:
   - Client-side bugfixes:
@@ -637,6 +791,11 @@ http://svn.apache.org/repos/asf/subversi
   - General:
     * fix failure in checkout_tests.py
     * support compiling against Cyrus sasl 2.1.25 (r1404912, r1413402)
+    * support compiling against neon 0.30.x (r1566320)
+
+
+Version 1.7.15
+(Not released, see changes for 1.7.16.)
 
 
 Version 1.7.14
@@ -883,7 +1042,7 @@ http://svn.apache.org/repos/asf/subversi
     * fix ra_serf against Subversion 1.2 servers (r1349367)
     * fix 'svn upgrade' on working copies with certain tree conflicts 
(r1345482)
     * avoid workqueue references to system temp dir (r1367854)
-    * allow non-existant canonical paths (r1367853)
+    * allow non-existent canonical paths (r1367853)
     * fix 'svn revert --depth files' to operate on files (r1365554)
     * fix ra_serf XML namespace handling against malicious server (r1337441)
     * fix relocate with server-relative externals (issue 4216)
@@ -1235,7 +1394,7 @@ the 1.6 release:  http://subversion.apac
     * fixed: rm -> ci -> cp = missing directory (issue #2763)
     * fixed: 'svn info' returns parent info on missing dirs (issue #3178)
     * fixed: spurious prop conflict with 'merge --reintegrate' (issue #3919)
-    * fixed: 'svn --version' fails with non-existant $HOME (issue #3947)
+    * fixed: 'svn --version' fails with non-existent $HOME (issue #3947)
     * fixed: unforced export silently overwites existing file (issue #3799)
     * fixed: reverse merge which adds subtree mergeinfo fails (issue #3978)
     * fixed: 'svn up -r{R>HEAD}' hangs client over ra_svn (issue #3963)
@@ -1410,7 +1569,7 @@ http://svn.apache.org/repos/asf/subversi
     * fix crash in mod_dav_svn with GETs of baselined resources (r1104126)
             See CVE-2011-1752, and descriptive advisory at
             http://subversion.apache.org/security/CVE-2011-1752-advisory.txt
-    * fixed: write-through proxy could direcly commit to slave (r917523)
+    * fixed: write-through proxy could directly commit to slave (r917523)
     * detect a particular corruption condition in FSFS (r1100213)
     * improve error message when clients refer to unknown revisions (r939000)
     * bugfixes and optimizations to the DAV mirroring code (r878607)

Propchange: subversion/branches/1.8.x-r1536854/CHANGES
------------------------------------------------------------------------------
  Merged /subversion/branches/1.8.x-r1536931/CHANGES:r1536934-1591145
  Merged /subversion/branches/1.8.x-issue4437/CHANGES:r1567249-1591140
  Merged /subversion/branches/1.8.x/CHANGES:r1579874-1640560
  Merged 
/subversion/trunk/CHANGES:r1569069,1573006,1585453,1586333,1590212,1591156,1591168,1615255-1615256,1615260

Modified: subversion/branches/1.8.x-r1536854/NOTICE
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/NOTICE?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/NOTICE (original)
+++ subversion/branches/1.8.x-r1536854/NOTICE Wed Nov 19 14:37:04 2014
@@ -1,5 +1,5 @@
 Apache Subversion
-Copyright 2013 The Apache Software Foundation
+Copyright 2014 The Apache Software Foundation
 
 This product includes software developed by many people, and distributed
 under Contributor License Agreements to The Apache Software Foundation

Modified: subversion/branches/1.8.x-r1536854/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/STATUS?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/STATUS (original)
+++ subversion/branches/1.8.x-r1536854/STATUS Wed Nov 19 14:37:04 2014
@@ -10,20 +10,11 @@ See http://subversion.apache.org/docs/co
 for details on how release lines and voting work, what kinds of bugs can
 delay a release, etc.
 
-Status of 1.8.9:
+Status of 1.8.11:
 
 Candidate changes:
 ==================
 
- * r1469519, r1469520, r1481848, r1481870
-   Silence compiler warnings, tighten scopes and improve code.
-   Justification:
-     Clean builds make it more likely to notice real compiler warnings.
-   Branch: ^/subversion/branches/1.8.x-r1469519-and-friends
-   Votes:
-     +1: blair, brane
-     -0: philip (see dev thread: false alarm, trades one warning for another)
-
  * r1501293, r1501338, r1501360, r1501533
    Fix issue #4390, "parallel nested checkout not possible with wc-ng"
    Justification:
@@ -42,29 +33,6 @@ Candidate changes:
                    a related problem. It looks like this fix doesn't work for
                    the user scenario it was intended for)
 
- * r1531014, r1532316, r1536350, r1536383, r1536464, r1536488, r1567204, 
r1567228
-   Fix working copy database inconsistency on certain move scenarios,
-   including those described in issue #4437 "Deleting a moved file can 
maintain a
-   half move"
-   Justification:
-     The working copy database should be consistent on any normal operation.
-   Branch:
-     ^/subversion/branches/1.8.x-issue4437
-   Votes:
-     +1: rhuijben
-     +1: (before branch, without r1567204, r1567228) philip
-
- * r1518942, r1536914, r1536931
-   Fix commit of a specific mixed revision copy with non copy descendants that
-   shadow not present nodes. This problem manifests itself as a copy of a tree
-   that can't be committed because it is reported out of date.
-   Justification:
-     'svn cp TREE NEW-TREE; svn ci NEW-TREE' should never report out of date
-     on some random descendant.
-   Branch: ^/subversion/branches/1.8.x-r1536931
-   Votes:
-     +1: rhuijben
-
  * r1536854
    Make 'svnadmin verify' detect inconsistencies that will prevent loading
    dump files.
@@ -76,17 +44,7 @@ Candidate changes:
    Branch: ^/subversion/branches/1.8.x-r1536854
    Votes:
      +1: stefan2
-
- * r1538812, r1538925, r1538928, r1538939
-   Properly remove moved_to information when the node in its original location
-   is removed.
-   Justification:
-     The NODES table in the working copy database should always be consistent.
-   Notes:
-     rhuijben: The test for this problem might accidentally depend on other
-               move fixes on trunk.
-   Votes:
-     +1: rhuijben, philip
+     +0: breser (I'd be +1 if not for the unused function in svnadmin_tests.py)
 
  * r1542610, r1564576, r1568180
    Add missing description to build.conf, to properly generate a version
@@ -99,28 +57,6 @@ Candidate changes:
      +1: (without r1564567, r1568180): stsp
      -0: brane (horrible grammar; suggest translation to English)
 
- * r1544597, r1544600, r1544688, r1544690, r1545111, r1545122
-   Fix a specific case where the api behind status would report a different
-   move status for A depending on whether the user called 'svn status A' or
-   'svn status wc' and then looked at 'wc/A'.
-   Justification:
-     Api users such as AnkhSVN rely on the result of svn status to match and
-     this breaks their assumptions.
-     This change has the nice side effect that it resolves the most common
-     user triggerable assertion in AnkhSVN, which is really caused by a
-     broken move. (See other nomination for a fix). But even then it shouldn't
-     matter how status is called: on the node or an ancestor.
-     (It also improves status performance a tiny bit, by reducing the number
-      of sqlite transactions used)
-   Notes:
-     r1564587 fixes a function reference on the branch in some code that
-     is disabled by the macro processor on Windows.
-   Branch:
-     ^/subversion/branches/1.8.x-r1544597
-   Votes:
-     +1: rhuijben
-     -0 (before branch): philip (Doesn't build, needs a branch due to r1539279)
-
  * r1555491
    Fix svn_fs_close_root for FSFS transaction roots.
    Justification:
@@ -133,141 +69,113 @@ Candidate changes:
      +1: stefan2
      -0: philip, rhuijben (Seems to be a different name for the same pool?)
 
- * r1547454
-   In FSFS, omit config file when creating pre-1.5 format repositories.
+ * r1589360
+   Make property output in 'svn diff' stable
    Justification:
-     Old SVN versions won't preserve this file in hotcopy.  Later versions
-     might also behave inconsistently in the presence of this file if their
-     feature availability check is incomplete.
-   Votes:
-     +1: stefan2
-     -0: rhuijben (Might require r1561703 to avoid breaking tests)
-
- * r1561426
-   In FSFS, skip the generation of uniquifiers if rep-shared is no supported.
-   Branch: ^/subversion/branches/1.8.x-r1561426
-   Justification:
-     This is not known to be a bug, atm, as we omit these when we write the
-     final revisions.  But we rely on those uniquifiers to be NULL in old
-     repo formats when we compare reps.  Them being non-NULL in a txn might
-     cause problems with future changes.
-   Votes:
-     +1: stefan2
-
- * r1567996, r1568009, r1568062, r1568063
-   Fix a caching inefficiency in multi-threaded servers.
-   Justification:
-     .
-   Notes:
-     Due to going back and forth with different approaches to solve this
-     issue, the best way to review this 
+     Local change that makes it easier to compare patch files.
    Branch:
-     ^/subversion/branches/1.8.x-r1567996
+     ^/subversion/branches/1.8.x-r1589360
    Votes:
-     +1: stefan2
-     -0: rhuijben (incomplete (misses cache->total_reads accesses) and
-                   overkill. The whole thing can be implemented with simple
-                   atomic operations while mutexes may be a limited resource)
+     +1: ivan, rhuijben
+     -0: stefan2 (compiler misses "private/svn_sorts_private.h",
+                  before branch)
 
- * r1571747, r1571787, r1571795
-   Resolve the 'commit_util.c' (repos_root_url && repos_relpath) assertion.
-   Notes:
-     This assertion is raised when specifically committing a deleted
-     descendant, like via a checkbox list in a GUI client.
+ * r1590751
+   Use empty, rather than NULL, config if default is unreadable.
    Justification:
-     Often reported assertion by users. Upto now very hard to reproduce
-     for these users. Probably because they didn's see that the node they
-     deleted wasn't added to the repository yet.
+     svn SEGV reported by user.
    Votes:
-     +1: rhuijben, philip
+     +1: philip
+     -0: julianfoad (prefer to fix all the programs at the same time;
+                     other queries -- see email thread)
 
- * r1575525, r1575915
-   Resolve issue #4427: File externals can't be exported.
-   Justification:
-     File externals 'are just files', so why should they be discriminated
-     by export?
+ * r1600331, r1600348, 1600368, r1600563, r1600781
+   Improve gpg-agent support.
+   Justification: Avoids spurious error logs, supports standard socket
+     locations and removes double prompts from pinentry.  Without these
+     changes it's far less desireable to use.
    Notes:
-     r1575525 resolves the most important issues, but in some cases still
-     doesn't allow exporting file externals. r1575915 simplifies the fix and
-     resolves a few remaining issues.
+     Branch is needed since SVN_VA_NULL is not available in 1.8.x.
+     This does change the behavior of gpg-agent from prompting twice
+     for the password with pinentry to confirm the user hasn't entered
+     an incorrect password to instead clearing bad cached passwords and
+     reprompting.  See my email on the subject: 
https://mail-archives.apache.org/mod_mbox/subversion-dev/201406.mbox/%3C538D2BE5.3070706%40reser.org%3E
+   Branch:
+     ^/subversion/branches/1.8.x-gpg-agent
    Votes:
-     +1: rhuijben
+     +1: breser, philip
 
- * r1577151
-   Make 'svn merge' honor the 'preserved-conflict-file-exts' setting.
+ * r1619380, r1619393
+   Fix diff of a locally copied directory with props: it showed all props
+   as added instead of a diff against the copy-from props.
    Justification:
-     While really a behavior change that doesn't belong in a patch release
-     I'm guessing nobody knew that we didn't implement this flag in this
-     scenario.
+     Behaviour regression introduced in 1.8.0.
+   Notes:
+     r1619380 is the fix; r1619393 a test for it.
+     The test on trunk@1619393 is tweaked to account for a trunk bug in the
+     display of diff headers; the backport branch provides the correct
+     version for 1.8.x.
+   Branch:
+     ^/subversion/branches/1.8.x-r1611379
    Votes:
-     +1: rhuijben
+     +1: julianfoad, rhuijben
 
- * r1577294
-   Make interactive conflict resolver behave as designed.
+ * r1620332
+   Remove broken conflict resolver menu options.
    Justification:
-     This was intended to be the behavior form the start.  A typo in a
-     refactoring broke it.  This fix helps users avoid accidentally choosing
-     'mark resolved' and committing conflict markers.
+     svn shouldn't offer menu options that always error out.
+   Notes:
+     Run merge with --accept theirs-conflict
    Votes:
-     +1: breser
+     +1: stsp, julianfoad
 
- * r1577812, r1577813, r1579429
-   Resolve a segfault when 'svn merge --force' merges a directory delete
+ * r1621978, r1621981
+   Fix changelist filtering for repos-WC and WC-WC diffs.
    Justification:
-     Even though this merge flag is not recommended, it shouldn't cause a
-     segfault.
-   Notes:
-     r1577812 contains the actual fix and a regression test. r1577813 is
-     a minor improvement. A branch is necessary because a comment right above
-     the fix contained a typo that was fixed on trunk in a huge commit of many
-     typo fixes.
+     Changelist filtering, enabled by "svn diff --cl foo" for example, was
+     broken (it crashed in common cases) and incomplete even if the crash
+     were avoided. See email thread "Segmentation fault during diff generation"
+     starting at <http://svn.haxx.se/dev/archive-2014-08/0325.shtml>.
    Branch:
-     ^/subversion/branches/1.8.x-r1577812
+     ^/subversion/branches/1.8.x-r1621978
    Votes:
-     +1: philip, rhuijben
+     +1: julianfoad, rhuijben
 
- * r1578273, r1578311, r1578326
-   Make svn_ra_get_locks() and svn_ra_get_lock() report not locked nodes
-   with a NULL svn_lock_t *, as documented.
-   Justification:
-     Many clients use the existance of an svn_lock_t on a node via info/status
-     as a boolean to note that there is a lock. But because we didn't properly
-     check the result we reported mostly empty svn_lock_t instances in more
-     cases. Even on directories!
-   Notes:
-     A branch is needed, because the serf lock handling code was refactored and
-     split to multiple files on trunk.
-   Branch:
-     ^/subversion/branches/1.8.x-r1578311
+ * r1625533, r1625537
+   Keep externals registrations on 'svn upgrade' (part of issue 4519)
+   Justification:
+     'svn upgrade' shouldn't destroy valid information.
    Votes:
-     +1: rhuijben, philip
+     +1: rhuijben
 
- * r1578670, r1578820, r1579274
-   Fix the order of node record headers written by svndumpfilter.
+ * r1628536
+   Fix issue #4085, "external can shadow a versioned directory".
    Justification:
-     Makes output match the rules documented in notes/dump-load-format.txt.
+     Bug that can lead to a working copy which cannot be updated
+     until a directory shadowing an external, which was switched
+     to the external's location by the externals handling code,
+     is switched back to its original path.
    Votes:
-     +1: philip, rhuijben
+     +1: stsp
 
- * r1578853, r1578875
-   Fix svnserve to only send inherited properties when necessary.
+ * r1633126
+   Improve performance of recorded timestamp fixups in svn cleanup
    Justification:
-     Performance regression from 1.7, reported by a user.
+     Fixing timestamps on a working copy with properly recorded timestamps
+     should not cost 10* the time of walking the working copy for status.
    Branch:
-     ^/subversion/branches/1.8.x-r1578853
+     ^/subversion/branches/1.8.x-r1633126
    Votes:
-     +1: philip, rhuijben
+     +1: rhuijben
 
- * r1579588
-   ra_serf: Fix 'svn unlock' interop with generic DAV clients that use timeout
+ * r1637826
+   Fix typos in LIBTOOL_M4 and LIBTOOL_CONFIG expansion in autogen.sh
    Justification:
-     Local fix to resolve user reported issue.
-   Notes:
-     Branch needed as the lock code was split to multiple files on trunk.
-   Branch:
-     ^/subversion/branches/1.8.x-r1579588
+     Makes no sense to tell users to set environment variables
+     to fix builds with libtool in a nonstandard location, if we
+     then don't interpret said environment variables correctly.
    Votes:
-     +1: rhuijben
+     +1: brane
 
 Veto-blocked changes:
 =====================

Modified: subversion/branches/1.8.x-r1536854/build.conf
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build.conf?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/build.conf (original)
+++ subversion/branches/1.8.x-r1536854/build.conf Wed Nov 19 14:37:04 2014
@@ -342,6 +342,7 @@ msvc-export = 
         private\svn_temp_serializer.h private\svn_io_private.h
         private\svn_string_private.h private\svn_magic.h
         private\svn_subr_private.h private\svn_mutex.h 
private\svn_named_atomic.h
+        private\svn_cert.h
 
 # Working copy management lib
 [libsvn_wc]

Modified: subversion/branches/1.8.x-r1536854/build/ac-macros/apache.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build/ac-macros/apache.m4?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/build/ac-macros/apache.m4 (original)
+++ subversion/branches/1.8.x-r1536854/build/ac-macros/apache.m4 Wed Nov 19 
14:37:04 2014
@@ -118,6 +118,27 @@ apache_minor_version=AP_SERVER_MINORVERS
   CPPFLAGS="$old_CPPFLAGS"
 fi
 
+# check for some busted versions of mod_dav
+# in particular 2.2.25, 2.4.5, and 2.4.6 had the following bugs which are
+# troublesome for Subversion:
+# PR 55304: https://issues.apache.org/bugzilla/show_bug.cgi?id=55304
+# PR 55306: https://issues.apache.org/bugzilla/show_bug.cgi?id=55306
+# PR 55397: https://issues.apache.org/bugzilla/show_bug.cgi?id=55397
+if test -n "$APXS" && test "$APXS" != "no"; then
+  AC_MSG_CHECKING([mod_dav version])
+  old_CPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
+  blacklisted_versions_regex=["\"2\" \"\.\" (\"2\" \"\.\" \"25\"|\"4\" \"\.\" 
\"[56]\")"]
+  AC_EGREP_CPP([apache_version= *$blacklisted_versions_regex],
+               [
+#include "$APXS_INCLUDE/ap_release.h"
+apache_version=AP_SERVER_BASEREVISION],
+               [AC_MSG_RESULT([broken])
+                AC_MSG_ERROR([Apache httpd version includes a broken mod_dav; 
use a newer version of httpd])],
+               [AC_MSG_RESULT([acceptable])])
+  CPPFLAGS="$old_CPPFLAGS"
+fi
+
 AC_ARG_WITH(apache-libexecdir,
             [AS_HELP_STRING([[--with-apache-libexecdir[=PATH]]],
                             [Install Apache modules to Apache's configured

Modified: subversion/branches/1.8.x-r1536854/build/ac-macros/berkeley-db.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build/ac-macros/berkeley-db.m4?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/build/ac-macros/berkeley-db.m4 (original)
+++ subversion/branches/1.8.x-r1536854/build/ac-macros/berkeley-db.m4 Wed Nov 
19 14:37:04 2014
@@ -89,7 +89,7 @@ AC_DEFUN(SVN_LIB_BERKELEY_DB,
         done
         SVN_DB_INCLUDES="${SVN_DB_INCLUDES## }"
         for l in [`echo "$withval" | $SED -e "s/.*:[^:]*:\([^:]*\):.*/\1/"`]; 
do
-          LDFLAGS="$LDFLAGS -L$l"
+          LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$l)`"
         done
         SVN_DB_LIBS=""
         for l in [`echo "$withval" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do

Modified: subversion/branches/1.8.x-r1536854/build/ac-macros/compiler.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build/ac-macros/compiler.m4?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/build/ac-macros/compiler.m4 (original)
+++ subversion/branches/1.8.x-r1536854/build/ac-macros/compiler.m4 Wed Nov 19 
14:37:04 2014
@@ -33,24 +33,27 @@ AC_DEFUN([_SVN_XXFLAGS_ADD_IFELSE],
 [
   _svn_xxflags__save="[$][$3]"
   AC_LANG_PUSH([$1])
-  AC_MSG_CHECKING([if [$][$2] accepts $4])
-  [$3]="$4 [$][$3]"
-  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[]])],[
+  AC_MSG_CHECKING([if [$][$2] accepts $5])
+  [$3]="$5 [$][$3]"
+  dnl Compiling is not enough: Solaris cc accepts invalid options at
+  dnl compile-time and just warns, assuming they are for the linker,
+  dnl but they cause errors at link-time.
+  AC_LINK_IFELSE([AC_LANG_SOURCE([$4])],[
     AC_MSG_RESULT([yes])
-    $5
+    $6
   ],[
     AC_MSG_RESULT([no])
     [$3]="$_svn_xxflags__save"
-    $6
+    $7
   ])
   AC_LANG_POP([$1])
 ])
 
 AC_DEFUN([SVN_CFLAGS_ADD_IFELSE],
-  [_SVN_XXFLAGS_ADD_IFELSE([C],[CC],[CFLAGS],[$1],[$2],[$3])])
+  [_SVN_XXFLAGS_ADD_IFELSE([C],[CC],[CFLAGS],[[int main(void){return 
0;}]],[$1],[$2],[$3])])
 
 AC_DEFUN([SVN_CXXFLAGS_ADD_IFELSE],
-  [_SVN_XXFLAGS_ADD_IFELSE([C++],[CXX],[CXXFLAGS],[$1],[$2],[$3])])
+  [_SVN_XXFLAGS_ADD_IFELSE([C++],[CXX],[CXXFLAGS],[[int 
main(){}]],[$1],[$2],[$3])])
 
 
 AC_DEFUN([SVN_CC_MODE_SETUP],

Modified: subversion/branches/1.8.x-r1536854/build/ac-macros/serf.m4
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build/ac-macros/serf.m4?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/build/ac-macros/serf.m4 (original)
+++ subversion/branches/1.8.x-r1536854/build/ac-macros/serf.m4 Wed Nov 19 
14:37:04 2014
@@ -98,7 +98,7 @@ AC_DEFUN(SVN_SERF_PREFIX_CONFIG,
     CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES $SVN_APRUTIL_INCLUDES 
-I$serf_prefix/include/$serf_major"
     AC_CHECK_HEADERS(serf.h,[
       save_ldflags="$LDFLAGS"
-      LDFLAGS="$LDFLAGS -L$serf_prefix/lib"
+      LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$serf_prefix/lib)`"
       AC_CHECK_LIB($serf_major, serf_context_create,[
         AC_TRY_COMPILE([
 #include <stdlib.h>
@@ -121,7 +121,7 @@ AC_DEFUN(SVN_SERF_PREFIX_CONFIG,
       SVN_SERF_LIBS="$serf_prefix/lib/lib$serf_major.la"
     else
       SVN_SERF_LIBS="-l$serf_major"
-      LDFLAGS="$LDFLAGS -L$serf_prefix/lib"
+      LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$serf_prefix/lib)`"
     fi
   fi
 ])

Modified: subversion/branches/1.8.x-r1536854/build/generator/gen_win.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build/generator/gen_win.py?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/build/generator/gen_win.py (original)
+++ subversion/branches/1.8.x-r1536854/build/generator/gen_win.py Wed Nov 19 
14:37:04 2014
@@ -189,8 +189,13 @@ class GeneratorBase(gen_base.GeneratorBa
           self.sln_version = '12.00'
           self.vcproj_version = '11.0'
           self.vcproj_extension = '.vcxproj'
+        elif val == '2013' or val == '12':
+          self.vs_version = '2013'
+          self.sln_version = '12.00'
+          self.vcproj_version = '12.0'
+          self.vcproj_extension = '.vcxproj'
         elif re.match('^1\d+$', val):
-          self.vsversion = val
+          self.vs_version = val
           self.sln_version = '12.00'
           self.vcproj_version = val + '.0'
           self.vcproj_extension = '.vcxproj'

Modified: 
subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_sln.ezt
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_sln.ezt?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_sln.ezt 
(original)
+++ subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_sln.ezt 
Wed Nov 19 14:37:04 2014
@@ -21,7 +21,9 @@
 #
 [end]Microsoft Visual Studio Solution File, Format Version [version]
 # Visual Studio [vs_version]
-[for targets]Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = 
"[targets.name]", "[targets.path]", "[targets.guid]"
+[is version "12.00"]VisualStudioVersion = 12.3.4.5
+MinimumVisualStudioVersion = 10.0.40219.1
+[end][for targets]Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = 
"[targets.name]", "[targets.path]", "[targets.guid]"
 [is dependency_location "solution"]    ProjectSection(ProjectDependencies) = 
postProject
 [for targets.depends]          [targets.depends.guid] = [targets.depends.guid]
 [end]  EndProjectSection

Modified: 
subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_vcproj.ezt
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_vcproj.ezt?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- 
subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_vcproj.ezt 
(original)
+++ 
subversion/branches/1.8.x-r1536854/build/generator/templates/vcnet_vcproj.ezt 
Wed Nov 19 14:37:04 2014
@@ -32,7 +32,7 @@
                        Name="[configs.name]|[platforms]"
                        
OutputDirectory="..\..\..\[configs.name]\[target.output_dir]"
                        BuildLogFile="$(IntDir)\BuildLog_$(ProjectName).htm"
-                       
IntermediateDirectory="..\..\..\[configs.name]\[target.intermediate_dir]"
+                       
IntermediateDirectory="..\..\..\[configs.name]\[target.intermediate_dir]\[target.proj_name]"
                        ConfigurationType="[target_type]"[is configs.name 
"Release"]
                        WholeProgramOptimization="FALSE"[end]>
                        <Tool

Modified: subversion/branches/1.8.x-r1536854/configure.ac
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/configure.ac?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/configure.ac (original)
+++ subversion/branches/1.8.x-r1536854/configure.ac Wed Nov 19 14:37:04 2014
@@ -98,7 +98,7 @@ dnl   now generating errors instead of s
 dnl   them.  Only .7 and later can guarantee repository
 dnl   integrity with FSFS.
 
-APR_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\. 2\."]
+APR_VER_REGEXES=["0\.9\.[7-9] 0\.9\.[12][0-9] 1\. 2\."]
 
 SVN_LIB_APR($APR_VER_REGEXES)
 
@@ -755,7 +755,7 @@ AC_ARG_WITH(libmagic,AS_HELP_STRING([--w
     CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
     AC_CHECK_HEADERS(magic.h,[
       save_ldflags="$LDFLAGS"
-      LDFLAGS="-L$libmagic_prefix/lib"
+      LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
       AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
       LDFLAGS="$save_ldflags"
     ])
@@ -1280,10 +1280,6 @@ if test "$RUBY" != "none"; then
       RUBY="none"
       AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
       AC_MSG_WARN([Only 1.8.x and 1.9.3 releases are supported at this time])
-    elif test \(  "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -eq "9" -a 
"$RUBY_TEENY" -eq "3" \); then
-      #Warn about 1.9.3 support
-      AC_MSG_WARN([WARNING: The detected Ruby is 1.9.3])
-      AC_MSG_WARN([WARNING: Only 1.8.x releases are fully supported, 1.9.3 
support is new])
     fi
   else
     AC_MSG_RESULT([no])

Propchange: subversion/branches/1.8.x-r1536854/configure.ac
------------------------------------------------------------------------------
  Merged /subversion/branches/1.8.x-r1579588/configure.ac:r1579589-1591112
  Merged /subversion/branches/1.8.x-r1536931/configure.ac:r1536934-1591145
  Merged /subversion/branches/1.8.x/configure.ac:r1579874-1640560
  Merged /subversion/branches/1.8.x-issue4437/configure.ac:r1567249-1591140
  Merged /subversion/branches/1.8.x-apr-0.9/configure.ac:r1585493-1589570
  Merged /subversion/trunk/configure.ac:r1577200,1593992

Modified: subversion/branches/1.8.x-r1536854/get-deps.sh
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/get-deps.sh?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/get-deps.sh (original)
+++ subversion/branches/1.8.x-r1536854/get-deps.sh Wed Nov 19 14:37:04 2014
@@ -33,11 +33,11 @@
 
 APR_VERSION=${APR_VERSION:-"1.4.6"}
 APU_VERSION=${APU_VERSION:-"1.5.1"}
-SERF_VERSION=${SERF_VERSION:-"1.2.1"}
+SERF_VERSION=${SERF_VERSION:-"1.3.4"}
 ZLIB_VERSION=${ZLIB_VERSION:-"1.2.8"}
 SQLITE_VERSION=${SQLITE_VERSION:-"3.7.15.1"}
 GTEST_VERSION=${GTEST_VERSION:-"1.6.0"}
-HTTPD_VERSION=${HTTPD_VERSION:-"2.4.6"}
+HTTPD_VERSION=${HTTPD_VERSION:-"2.4.10"}
 APR_ICONV_VERSION=${APR_ICONV_VERSION:-"1.2.1"}
 
 APR=apr-${APR_VERSION}
@@ -57,7 +57,7 @@ TEMPDIR=$BASEDIR/temp
 
 HTTP_FETCH=
 [ -z "$HTTP_FETCH" ] && type wget  >/dev/null 2>&1 && HTTP_FETCH="wget -q -nc"
-[ -z "$HTTP_FETCH" ] && type curl  >/dev/null 2>&1 && HTTP_FETCH="curl -sO"
+[ -z "$HTTP_FETCH" ] && type curl  >/dev/null 2>&1 && HTTP_FETCH="curl -sOL"
 [ -z "$HTTP_FETCH" ] && type fetch >/dev/null 2>&1 && HTTP_FETCH="fetch -q"
 
 # Need this uncommented if any of the specific versions of the ASF tarballs to
@@ -89,7 +89,7 @@ get_serf() {
     test -d $BASEDIR/serf && return
 
     cd $TEMPDIR
-    $HTTP_FETCH http://serf.googlecode.com/files/$SERF.tar.bz2
+    $HTTP_FETCH http://serf.googlecode.com/svn/src_releases/$SERF.tar.bz2
     cd $BASEDIR
 
     bzip2 -dc $TEMPDIR/$SERF.tar.bz2 | tar -xf -
@@ -101,7 +101,7 @@ get_zlib() {
     test -d $BASEDIR/zlib && return
 
     cd $TEMPDIR
-    $HTTP_FETCH http://www.zlib.net/$ZLIB.tar.gz
+    $HTTP_FETCH 
http://sourceforge.net/projects/libpng/files/zlib/$ZLIB_VERSION/$ZLIB.tar.gz
     cd $BASEDIR
 
     gzip -dc $TEMPDIR/$ZLIB.tar.gz | tar -xf -

Modified: 
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.cpp
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.cpp?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- 
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.cpp
 (original)
+++ 
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.cpp
 Wed Nov 19 14:37:04 2014
@@ -418,7 +418,7 @@ JNIUtil::putErrorsInTrace(svn_error_t *e
   env->DeleteLocalRef(jfileName);
 }
 
-void JNIUtil::handleSVNError(svn_error_t *err)
+void JNIUtil::wrappedHandleSVNError(svn_error_t *err)
 {
   std::string msg;
   assembleErrorMessage(svn_error_purge_tracing(err), 0, APR_SUCCESS, msg);
@@ -546,7 +546,16 @@ void JNIUtil::handleSVNError(svn_error_t
 #endif
 
   env->Throw(static_cast<jthrowable>(env->PopLocalFrame(nativeException)));
+}
 
+void JNIUtil::handleSVNError(svn_error_t *err)
+{
+  try {
+    wrappedHandleSVNError(err);
+  } catch (...) {
+    svn_error_clear(err);
+    throw;
+  }
   svn_error_clear(err);
 }
 
@@ -646,28 +655,42 @@ bool JNIUtil::isJavaExceptionThrown()
 const char *
 JNIUtil::thrownExceptionToCString(SVN::Pool &in_pool)
 {
-  const char *msg;
+  const char *msg = NULL;
   JNIEnv *env = getEnv();
+  apr_pool_t *pool = in_pool.getPool();
   if (env->ExceptionCheck())
     {
       jthrowable t = env->ExceptionOccurred();
-      static jmethodID getMessage = 0;
-      if (getMessage == 0)
+      jclass cls = env->GetObjectClass(t);
+
+      jstring jclass_name;
+      {
+        jmethodID mid = env->GetMethodID(cls, "getClass", 
"()Ljava/lang/Class;");
+        jobject clsobj = env->CallObjectMethod(t, mid);
+        jclass basecls = env->GetObjectClass(clsobj);
+        mid = env->GetMethodID(basecls, "getName", "()Ljava/lang/String;");
+        jclass_name = (jstring) env->CallObjectMethod(clsobj, mid);
+      }
+
+      jstring jmessage;
+      {
+        jmethodID mid = env->GetMethodID(cls, "getMessage",
+                                         "()Ljava/lang/String;");
+        jmessage = (jstring) env->CallObjectMethod(t, mid);
+      }
+
+      JNIStringHolder class_name(jclass_name);
+      if (jmessage)
         {
-          jclass clazz = env->FindClass("java/lang/Throwable");
-          getMessage = env->GetMethodID(clazz, "getMessage",
-                                        "(V)Ljava/lang/String;");
-          env->DeleteLocalRef(clazz);
+          JNIStringHolder message(jmessage);
+          msg = apr_pstrcat(pool,
+                            static_cast<const char*>(class_name), ": ",
+                            static_cast<const char*>(message), NULL);
         }
-      jstring jmsg = (jstring) env->CallObjectMethod(t, getMessage);
-      JNIStringHolder tmp(jmsg);
-      msg = tmp.pstrdup(in_pool.getPool());
+      else
+        msg = class_name.pstrdup(pool);
       // ### Conditionally add t.printStackTrace() to msg?
     }
-  else
-    {
-      msg = NULL;
-    }
   return msg;
 }
 

Modified: 
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.h?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- 
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.h 
(original)
+++ 
subversion/branches/1.8.x-r1536854/subversion/bindings/javahl/native/JNIUtil.h 
Wed Nov 19 14:37:04 2014
@@ -141,6 +141,7 @@ class JNIUtil
   enum { noLog, errorLog, exceptionLog, entryLog } LogLevel;
 
  private:
+  static void wrappedHandleSVNError(svn_error_t *err);
   static void assembleErrorMessage(svn_error_t *err, int depth,
                                    apr_status_t parent_apr_err,
                                    std::string &buffer);

Modified: 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/python/tests/client.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/bindings/swig/python/tests/client.py?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/python/tests/client.py
 (original)
+++ 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/python/tests/client.py
 Wed Nov 19 14:37:04 2014
@@ -437,6 +437,68 @@ class SubversionClientTestCase(unittest.
                      self.proplist_receiver_dir1, self.client_ctx)
     self.assertEquals(self.proplist_receiver_dir1_calls, 1)
 
+  def test_update4(self):
+    """Test update and the notify function callbacks"""
+
+    rev = core.svn_opt_revision_t()
+    rev.kind = core.svn_opt_revision_number
+    rev.value.number = 0
+
+    path = self.temper.alloc_empty_dir('-update')
+
+    self.assertRaises(ValueError, client.checkout2,
+                      self.repos_uri, path, None, None, True, True,
+                      self.client_ctx)
+
+    client.checkout2(self.repos_uri, path, rev, rev, True, True,
+            self.client_ctx)
+
+    def notify_func(path, action, kind, mime_type, content_state, prop_state, 
rev):
+        self.notified_paths.append(path)
+
+    self.client_ctx.notify_func = client.svn_swig_py_notify_func
+    self.client_ctx.notify_baton = notify_func
+    rev.value.number = 1
+    self.notified_paths = []
+    client.update4((path,), rev, core.svn_depth_unknown, True, False, False,
+                   False, False, self.client_ctx)
+    expected_paths = [
+        path,
+        os.path.join(path, 'branches'),
+        os.path.join(path, 'tags'),
+        os.path.join(path, 'trunk'),
+        path,
+        path
+    ]
+    # All normal subversion apis process paths in Subversion's canonical 
format,
+    # which isn't the platform specific format
+    expected_paths = [x.replace(os.path.sep, '/') for x in expected_paths]
+    self.notified_paths.sort()
+    expected_paths.sort()
+
+    self.assertEquals(self.notified_paths, expected_paths)
+
+    def notify_func2(notify, pool):
+        self.notified_paths.append(notify.path)
+
+    self.client_ctx.notify_func2 = client.svn_swig_py_notify_func2
+    self.client_ctx.notify_baton2 = notify_func2
+    rev.value.number = 2
+    self.notified_paths = []
+    expected_paths = [
+        path,
+        os.path.join(path, 'trunk', 'README.txt'),
+        os.path.join(path, 'trunk'),
+        path,
+        path
+    ]
+    expected_paths = [x.replace(os.path.sep, '/') for x in expected_paths]
+    client.update4((path,), rev, core.svn_depth_unknown, True, False, False,
+                   False, False, self.client_ctx)
+    self.notified_paths.sort()
+    expected_paths.sort()
+    self.assertEquals(self.notified_paths, expected_paths)
+
 
 def suite():
     return unittest.defaultTestLoader.loadTestsFromTestCase(

Modified: 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
 (original)
+++ 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
 Wed Nov 19 14:37:04 2014
@@ -1192,6 +1192,7 @@ DEFINE_DUP(auth_ssl_server_cert_info)
 DEFINE_DUP(wc_entry)
 DEFINE_DUP(client_diff_summarize)
 DEFINE_DUP(dirent)
+DEFINE_DUP(log_entry)
 DEFINE_DUP_NO_CONVENIENCE(client_commit_item3)
 DEFINE_DUP_NO_CONVENIENCE(client_proplist_item)
 DEFINE_DUP_NO_CONVENIENCE(wc_external_item2)
@@ -2155,9 +2156,7 @@ svn_swig_rb_log_entry_receiver(void *bat
 
         cbb.receiver = proc;
         cbb.message = id_call;
-        cbb.args = rb_ary_new3(1,
-                               c2r_swig_type((void *)entry,
-                                             (void *)"svn_log_entry_t *"));
+        cbb.args = rb_ary_new3(1, c2r_log_entry__dup(entry));
         invoke_callback_handle_error((VALUE)(&cbb), rb_pool, &err);
     }
     return err;

Modified: 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/test/test_client.rb
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/test/test_client.rb?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/test/test_client.rb
 (original)
+++ 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/ruby/test/test_client.rb
 Wed Nov 19 14:37:04 2014
@@ -2262,7 +2262,6 @@ class SvnClientTest < Test::Unit::TestCa
         end
       end
       config = Svn::Core::Config.config(@config_path)
-      assert_nil(ctx.config)
       assert_equal(options, config[Svn::Core::CONFIG_CATEGORY_SERVERS].to_hash)
       ctx.config = config
       assert_equal(options,

Modified: 
subversion/branches/1.8.x-r1536854/subversion/bindings/swig/svn_client.i
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/bindings/swig/svn_client.i?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/bindings/swig/svn_client.i 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/bindings/swig/svn_client.i 
Wed Nov 19 14:37:04 2014
@@ -385,7 +385,8 @@ Callback: svn_client_diff_summarize_func
 /* provide Python with access to some thunks. */
 %constant svn_cancel_func_t svn_swig_py_cancel_func;
 %constant svn_client_get_commit_log3_t svn_swig_py_get_commit_log_func;
-%constant svn_wc_notify_func2_t svn_swig_py_notify_func;
+%constant svn_wc_notify_func_t svn_swig_py_notify_func;
+%constant svn_wc_notify_func2_t svn_swig_py_notify_func2;
 
 #endif
 
@@ -395,7 +396,13 @@ Callback: svn_client_diff_summarize_func
   svn_client_ctx_t(apr_pool_t *pool) {
     svn_error_t *err;
     svn_client_ctx_t *self;
-    err = svn_client_create_context(&self, pool);
+    apr_hash_t *cfg_hash;
+
+    err = svn_config_get_config(&cfg_hash, NULL, pool);
+    if (err)
+      svn_swig_rb_handle_svn_error(err);
+
+    err = svn_client_create_context2(&self, cfg_hash, pool);
     if (err)
       svn_swig_rb_handle_svn_error(err);
     return self;
@@ -512,7 +519,13 @@ svn_client_set_config(svn_client_ctx_t *
                       apr_hash_t *config,
                       apr_pool_t *pool)
 {
-  ctx->config = config;
+  svn_error_t *err;
+
+  apr_hash_clear(ctx->config);
+  err = svn_config_copy_config(&ctx->config, config,
+                               apr_hash_pool_get(ctx->config));
+  if (err)
+    svn_swig_rb_handle_svn_error(err);
   return Qnil;
 }
 

Modified: 
subversion/branches/1.8.x-r1536854/subversion/include/private/svn_cache.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/include/private/svn_cache.h?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/include/private/svn_cache.h 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/include/private/svn_cache.h 
Wed Nov 19 14:37:04 2014
@@ -182,6 +182,10 @@ typedef struct svn_cache__info_t
  * if they are strings.  Cached values will be copied in and out of
  * the cache using @a serialize_func and @a deserialize_func, respectively.
  *
+ * If @a deserialize_func is NULL, then the data is returned as an
+ * svn_stringbuf_t; if @a serialize_func is NULL, then the data is
+ * assumed to be an svn_stringbuf_t.
+ *
  * The cache stores up to @a pages * @a items_per_page items at a
  * time.  The exact cache invalidation strategy is not defined here,
  * but in general, a lower value for @a items_per_page means more
@@ -224,7 +228,7 @@ svn_cache__create_inprocess(svn_cache__t
  * other caches.  @a *cache_p will be allocated in @a result_pool.
  *
  * If @a deserialize_func is NULL, then the data is returned as an
- * svn_string_t; if @a serialize_func is NULL, then the data is
+ * svn_stringbuf_t; if @a serialize_func is NULL, then the data is
  * assumed to be an svn_stringbuf_t.
  *
  * These caches are always thread safe.
@@ -309,7 +313,7 @@ svn_cache__membuffer_cache_create(svn_me
  * this cache from other caches.  @a *cache_p will be allocated in @a 
result_pool.
  *
  * If @a deserialize_func is NULL, then the data is returned as an
- * svn_string_t; if @a serialize_func is NULL, then the data is
+ * svn_stringbuf_t; if @a serialize_func is NULL, then the data is
  * assumed to be an svn_stringbuf_t.
  *
  * If @a thread_safe is true, and APR is compiled with threads, all

Modified: 
subversion/branches/1.8.x-r1536854/subversion/include/private/svn_dep_compat.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/include/private/svn_dep_compat.h?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- 
subversion/branches/1.8.x-r1536854/subversion/include/private/svn_dep_compat.h 
(original)
+++ 
subversion/branches/1.8.x-r1536854/subversion/include/private/svn_dep_compat.h 
Wed Nov 19 14:37:04 2014
@@ -78,6 +78,7 @@ void svn_hash__clear(struct apr_hash_t *
 #if !APR_VERSION_AT_LEAST(1,0,0)
 #define APR_UINT64_C(val) UINT64_C(val)
 #define APR_FPROT_OS_DEFAULT APR_OS_DEFAULT
+#define apr_hash_make_custom(pool,hash_func) apr_hash_make(pool)
 #endif
 
 #if !APR_VERSION_AT_LEAST(1,3,0)
@@ -114,6 +115,12 @@ typedef apr_uint32_t apr_uintptr_t;
 #define SVN_LOCK_IS_BUSY(x) APR_STATUS_IS_EBUSY(x)
 #endif
 
+#if !APR_VERSION_AT_LEAST(1,4,0)
+#ifndef apr_time_from_msec
+#define apr_time_from_msec(msec) ((apr_time_t)(msec) * 1000)
+#endif
+#endif
+
 /**
  * Check at compile time if the Serf version is at least a certain
  * level.

Modified: subversion/branches/1.8.x-r1536854/subversion/include/svn_io.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/include/svn_io.h?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/include/svn_io.h (original)
+++ subversion/branches/1.8.x-r1536854/subversion/include/svn_io.h Wed Nov 19 
14:37:04 2014
@@ -1148,6 +1148,8 @@ svn_stream_read(svn_stream_t *stream,
  * of reads or a simple seek operation. If the stream implementation has
  * not provided a skip function, this will read from the stream and
  * discard the data.
+ *
+ * @since New in 1.7.
  */
 svn_error_t *
 svn_stream_skip(svn_stream_t *stream,

Modified: subversion/branches/1.8.x-r1536854/subversion/include/svn_version.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/include/svn_version.h?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/include/svn_version.h 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/include/svn_version.h Wed Nov 
19 14:37:04 2014
@@ -72,7 +72,7 @@ extern "C" {
  *
  * @since New in 1.1.
  */
-#define SVN_VER_PATCH      9
+#define SVN_VER_PATCH      11
 
 
 /** @deprecated Provided for backward compatibility with the 1.0 API. */

Modified: 
subversion/branches/1.8.x-r1536854/subversion/libsvn_client/commit_util.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/libsvn_client/commit_util.c?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/libsvn_client/commit_util.c 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/libsvn_client/commit_util.c 
Wed Nov 19 14:37:04 2014
@@ -892,7 +892,7 @@ harvest_status_callback(void *status_bat
   if (matches_changelists
       && (is_harvest_root || baton->changelists)
       && state_flags
-      && is_added
+      && (is_added || (is_deleted && is_op_root && status->copied))
       && baton->danglers)
     {
       /* If a node is added, its parent must exist in the repository at the
@@ -966,17 +966,19 @@ struct handle_descendants_baton
   void *cancel_baton;
   svn_client__check_url_kind_t check_url_func;
   void *check_url_baton;
+  svn_client__committables_t *committables;
 };
 
 /* Helper for the commit harvesters */
 static svn_error_t *
 handle_descendants(void *baton,
-                       const void *key, apr_ssize_t klen, void *val,
-                       apr_pool_t *pool)
+                   const void *key, apr_ssize_t klen, void *val,
+                   apr_pool_t *pool)
 {
   struct handle_descendants_baton *hdb = baton;
   apr_array_header_t *commit_items = val;
   apr_pool_t *iterpool = svn_pool_create(pool);
+  const char *repos_root_url = key;
   int i;
 
   for (i = 0; i < commit_items->nelts; i++)
@@ -1002,32 +1004,64 @@ handle_descendants(void *baton,
 
       for (j = 0; j < absent_descendants->nelts; j++)
         {
-          int k;
-          svn_boolean_t found_item = FALSE;
           svn_node_kind_t kind;
+          svn_client_commit_item3_t *desc_item;
           const char *relpath = APR_ARRAY_IDX(absent_descendants, j,
                                               const char *);
           const char *local_abspath = svn_dirent_join(item->path, relpath,
                                                       iterpool);
 
-          /* If the path has a commit operation, we do nothing.
-             (It will be deleted by the operation) */
-          for (k = 0; k < commit_items->nelts; k++)
+          /* ### Need a sub-iterpool? */
+
+
+          /* We found a 'not present' descendant during a copy (at op_depth>0),
+             this is most commonly caused by copying some mixed revision tree.
+
+             In this case not present can imply that the node does not exist
+             in the parent revision, or that the node does. But we want to copy
+             the working copy state in which it does not exist, but might be
+             replaced. */
+
+          desc_item = svn_hash_gets(hdb->committables->by_path, local_abspath);
+
+          /* If the path has a commit operation (possibly at an higher
+             op_depth, we might want to turn an add in a replace. */
+          if (desc_item)
             {
-              svn_client_commit_item3_t *cmt_item =
-                 APR_ARRAY_IDX(commit_items, k, svn_client_commit_item3_t *);
+              const char *dir;
+              svn_boolean_t found_intermediate = FALSE;
+
+              if (desc_item->state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
+                continue; /* We already have a delete or replace */
+              else if (!(desc_item->state_flags & SVN_CLIENT_COMMIT_ITEM_ADD))
+                continue; /* Not a copy/add, just a modification */
 
-              if (! strcmp(cmt_item->path, local_abspath))
+              dir = svn_dirent_dirname(local_abspath, iterpool);
+
+              while (strcmp(dir, item->path))
                 {
-                  found_item = TRUE;
-                  break;
+                  svn_client_commit_item3_t *i_item;
+
+                  i_item = svn_hash_gets(hdb->committables->by_path, dir);
+
+                  if (i_item)
+                    {
+                      if ((i_item->state_flags & SVN_CLIENT_COMMIT_ITEM_DELETE)
+                          || (i_item->state_flags & 
SVN_CLIENT_COMMIT_ITEM_ADD))
+                        {
+                          found_intermediate = TRUE;
+                          break;
+                        }
+                    }
+                  dir = svn_dirent_dirname(dir, iterpool);
                 }
-            }
 
-          if (found_item)
-            continue; /* We have an explicit delete or replace for this path */
+              if (found_intermediate)
+                continue; /* Some intermediate ancestor is an add or delete */
 
-          /* ### Need a sub-iterpool? */
+              /* Fall through to detect if we need to turn the add in a
+                 replace. */
+            }
 
           if (hdb->check_url_func)
             {
@@ -1045,25 +1079,35 @@ handle_descendants(void *baton,
           else
             kind = svn_node_unknown; /* 'Ok' for a delete of something */
 
-          {
-            /* Add a new commit item that describes the delete */
-            apr_pool_t *result_pool = commit_items->pool;
-            svn_client_commit_item3_t *new_item
-                  = svn_client_commit_item3_create(result_pool);
-
-            new_item->path = svn_dirent_join(item->path, relpath,
-                                             result_pool);
-            new_item->kind = kind;
-            new_item->url = svn_path_url_add_component2(item->url, relpath,
-                                                        result_pool);
-            new_item->revision = SVN_INVALID_REVNUM;
-            new_item->state_flags = SVN_CLIENT_COMMIT_ITEM_DELETE;
-            new_item->incoming_prop_changes = apr_array_make(result_pool, 1,
-                                                 sizeof(svn_prop_t *));
-
-            APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *)
-                  = new_item;
-          }
+          if (desc_item)
+            {
+              /* Extend the existing add/copy item to create a replace */
+              desc_item->state_flags |= SVN_CLIENT_COMMIT_ITEM_DELETE;
+              continue;
+            }
+
+          /* Add a new commit item that describes the delete */
+
+          SVN_ERR(add_committable(hdb->committables,
+                                  svn_dirent_join(item->path, relpath,
+                                                  iterpool),
+                                  kind,
+                                  repos_root_url,
+                                  svn_uri_skip_ancestor(
+                                        repos_root_url,
+                                        svn_path_url_add_component2(item->url,
+                                                                    relpath,
+                                                                    iterpool),
+                                        iterpool),
+                                  SVN_INVALID_REVNUM,
+                                  NULL /* copyfrom_relpath */,
+                                  SVN_INVALID_REVNUM,
+                                  NULL /* moved_from_abspath */,
+                                  SVN_CLIENT_COMMIT_ITEM_DELETE,
+                                  NULL /* lock tokens */,
+                                  NULL /* lock */,
+                                  commit_items->pool,
+                                  iterpool));
         }
       }
 
@@ -1181,6 +1225,7 @@ svn_client__harvest_committables(svn_cli
   hdb.cancel_baton = ctx->cancel_baton;
   hdb.check_url_func = check_url_func;
   hdb.check_url_baton = check_url_baton;
+  hdb.committables = *committables;
 
   SVN_ERR(svn_iter_apr_hash(NULL, (*committables)->by_repository,
                             handle_descendants, &hdb, iterpool));
@@ -1274,6 +1319,7 @@ harvest_copy_committables(void *baton, v
   hdb.cancel_baton = btn->ctx->cancel_baton;
   hdb.check_url_func = btn->check_url_func;
   hdb.check_url_baton = btn->check_url_baton;
+  hdb.committables = btn->committables;
 
   SVN_ERR(svn_iter_apr_hash(NULL, btn->committables->by_repository,
                             handle_descendants, &hdb, pool));

Modified: subversion/branches/1.8.x-r1536854/subversion/libsvn_client/delete.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/libsvn_client/delete.c?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/libsvn_client/delete.c 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/libsvn_client/delete.c Wed 
Nov 19 14:37:04 2014
@@ -193,7 +193,7 @@ path_driver_cb_func(void **dir_baton,
 
 static svn_error_t *
 single_repos_delete(svn_ra_session_t *ra_session,
-                    const char *repos_root,
+                    const char *base_uri,
                     const apr_array_header_t *relpaths,
                     const apr_hash_t *revprop_table,
                     svn_commit_callback2_t commit_callback,
@@ -221,7 +221,7 @@ single_repos_delete(svn_ra_session_t *ra
           const char *relpath = APR_ARRAY_IDX(relpaths, i, const char *);
 
           item = svn_client_commit_item3_create(pool);
-          item->url = svn_path_url_add_component2(repos_root, relpath, pool);
+          item->url = svn_path_url_add_component2(base_uri, relpath, pool);
           item->state_flags = SVN_CLIENT_COMMIT_ITEM_DELETE;
           APR_ARRAY_PUSH(commit_items, svn_client_commit_item3_t *) = item;
         }
@@ -361,7 +361,6 @@ delete_urls_multi_repos(const apr_array_
   iterpool = svn_pool_create(pool);
   for (hi = apr_hash_first(pool, deletables); hi; hi = apr_hash_next(hi))
     {
-      const char *repos_root = svn__apr_hash_index_key(hi);
       struct repos_deletables_t *repos_deletables = 
svn__apr_hash_index_val(hi);
       const char *base_uri;
       apr_array_header_t *target_relpaths;
@@ -398,7 +397,7 @@ delete_urls_multi_repos(const apr_array_
         }
 
       SVN_ERR(svn_ra_reparent(repos_deletables->ra_session, base_uri, pool));
-      SVN_ERR(single_repos_delete(repos_deletables->ra_session, repos_root,
+      SVN_ERR(single_repos_delete(repos_deletables->ra_session, base_uri,
                                   target_relpaths,
                                   revprop_table, commit_callback,
                                   commit_baton, ctx, iterpool));

Modified: subversion/branches/1.8.x-r1536854/subversion/libsvn_client/export.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/libsvn_client/export.c?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/libsvn_client/export.c 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/libsvn_client/export.c Wed 
Nov 19 14:37:04 2014
@@ -267,7 +267,9 @@ export_node(void *baton,
                                                       scratch_pool));
     }
 
-  if (status->file_external)
+  /* Skip file externals if they are a descendant of the export,
+     BUT NOT if we are explictly exporting the file external. */
+  if (status->file_external && strcmp(eib->origin_abspath, local_abspath) != 0)
     return SVN_NO_ERROR;
 
   /* Produce overwrite errors for the export root */
@@ -1587,3 +1589,4 @@ svn_client_export5(svn_revnum_t *result_
 
   return SVN_NO_ERROR;
 }
+

Modified: 
subversion/branches/1.8.x-r1536854/subversion/libsvn_client/externals.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/libsvn_client/externals.c?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/libsvn_client/externals.c 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/libsvn_client/externals.c Wed 
Nov 19 14:37:04 2014
@@ -1017,19 +1017,30 @@ svn_client__handle_externals(apr_hash_t 
 
         parent_abspath = svn_dirent_dirname(parent_abspath, iterpool);
         SVN_ERR(svn_wc_read_kind2(&kind, ctx->wc_ctx, parent_abspath,
-                                  TRUE, FALSE, iterpool));
+                                  FALSE /* show_deleted*/,
+                                  FALSE /* show_hidden */,
+                                  iterpool));
         if (kind == svn_node_none)
           {
             svn_error_t *err;
 
             err = svn_io_dir_remove_nonrecursive(parent_abspath, iterpool);
-            if (err && APR_STATUS_IS_ENOTEMPTY(err->apr_err))
+            if (err)
               {
-                svn_error_clear(err);
-                break;
+                if (APR_STATUS_IS_ENOTEMPTY(err->apr_err))
+                  {
+                    svn_error_clear(err);
+                    break; /* No parents to delete */
+                  }
+                else if (APR_STATUS_IS_ENOENT(err->apr_err)
+                         || APR_STATUS_IS_ENOTDIR(err->apr_err))
+                  {
+                    svn_error_clear(err);
+                    /* Fall through; parent dir might be unversioned */
+                  }
+                else
+                  return svn_error_trace(err);
               }
-            else
-              SVN_ERR(err);
           }
       } while (strcmp(parent_abspath, defining_abspath) != 0);
     }

Modified: subversion/branches/1.8.x-r1536854/subversion/libsvn_client/merge.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/libsvn_client/merge.c?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/libsvn_client/merge.c 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/libsvn_client/merge.c Wed Nov 
19 14:37:04 2014
@@ -322,6 +322,10 @@ typedef struct merge_cmd_baton_t {
   const char *diff3_cmd;
   const apr_array_header_t *merge_options;
 
+  /* Array of file extension patterns to preserve as extensions in
+     generated conflict files. */
+  const apr_array_header_t *ext_patterns;
+
   /* RA sessions used throughout a merge operation.  Opened/re-parented
      as needed.
 
@@ -2023,17 +2027,36 @@ merge_file_changed(const char *relpath,
     {
       svn_boolean_t has_local_mods;
       enum svn_wc_merge_outcome_t content_outcome;
+      const char *target_label;
+      const char *left_label;
+      const char *right_label;
+      const char *path_ext = "";
+
+      if (merge_b->ext_patterns && merge_b->ext_patterns->nelts)
+        {
+          svn_path_splitext(NULL, &path_ext, local_abspath, scratch_pool);
+          if (! (*path_ext
+                 && svn_cstring_match_glob_list(path_ext,
+                                                merge_b->ext_patterns)))
+            {
+              path_ext = "";
+            }
+        }
 
       /* xgettext: the '.working', '.merge-left.r%ld' and
          '.merge-right.r%ld' strings are used to tag onto a file
          name in case of a merge conflict */
-      const char *target_label = _(".working");
-      const char *left_label = apr_psprintf(scratch_pool,
-                                            _(".merge-left.r%ld"),
-                                            left_source->revision);
-      const char *right_label = apr_psprintf(scratch_pool,
-                                             _(".merge-right.r%ld"),
-                                             right_source->revision);
+
+      target_label = apr_psprintf(scratch_pool, _(".working%s%s"),
+                                  *path_ext ? "." : "", path_ext);
+      left_label = apr_psprintf(scratch_pool,
+                                _(".merge-left.r%ld%s%s"),
+                                left_source->revision,
+                                *path_ext ? "." : "", path_ext);
+      right_label = apr_psprintf(scratch_pool,
+                                 _(".merge-right.r%ld%s%s"),
+                                 right_source->revision,
+                                 *path_ext ? "." : "", path_ext);
 
       SVN_ERR(svn_wc_text_modified_p2(&has_local_mods, ctx->wc_ctx,
                                       local_abspath, FALSE, scratch_pool));
@@ -3062,7 +3085,6 @@ merge_dir_deleted(const char *relpath,
   struct merge_dir_baton_t *db = dir_baton;
   const char *local_abspath = svn_dirent_join(merge_b->target->abspath,
                                               relpath, scratch_pool);
-  struct dir_delete_baton_t *delb;
   svn_boolean_t same;
   apr_hash_t *working_props;
 
@@ -3093,66 +3115,69 @@ merge_dir_deleted(const char *relpath,
                             scratch_pool, scratch_pool));
 
   if (merge_b->force_delete)
-    same = TRUE;
+    {
+      /* In this legacy mode we just assume that a directory delete
+         matches any directory. db->delete_state is NULL */
+      same = TRUE;
+    }
   else
     {
+      struct dir_delete_baton_t *delb;
+
       /* Compare the properties */
       SVN_ERR(properties_same_p(&same, left_props, working_props,
                                 scratch_pool));
-    }
+      delb = db->delete_state;
+      assert(delb != NULL);
 
-  delb = db->delete_state;
-  assert(delb != NULL);
+      if (! same)
+        {
+          delb->found_edit = TRUE;
+        }
+      else
+        {
+          store_path(delb->compared_abspaths, local_abspath);
+        }
 
-  if (! same)
-    {
-      delb->found_edit = TRUE;
-    }
-  else
-    {
-      store_path(delb->compared_abspaths, local_abspath);
-    }
+      if (delb->del_root != db)
+        return SVN_NO_ERROR;
 
-  if (delb->del_root != db)
-    return SVN_NO_ERROR;
+      if (delb->found_edit)
+        same = FALSE;
+      else
+        {
+          apr_array_header_t *ignores;
+          svn_error_t *err;
+          same = TRUE;
 
-  if (delb->found_edit)
-    same = FALSE;
-  else if (merge_b->force_delete)
-    same = TRUE;
-  else
-    {
-      apr_array_header_t *ignores;
-      svn_error_t *err;
-      same = TRUE;
+          SVN_ERR(svn_wc_get_default_ignores(&ignores, merge_b->ctx->config,
+                                             scratch_pool));
 
-      SVN_ERR(svn_wc_get_default_ignores(&ignores, merge_b->ctx->config,
-                                         scratch_pool));
+          /* None of the descendants was modified, but maybe there are
+             descendants we haven't walked?
 
-      /* None of the descendants was modified, but maybe there are
-         descendants we haven't walked?
+             Note that we aren't interested in changes, as we already verified
+             changes in the paths touched by the merge. And the existence of
+             other paths is enough to mark the directory edited */
+          err = svn_wc_walk_status(merge_b->ctx->wc_ctx, local_abspath,
+                                   svn_depth_infinity, TRUE /* get-all */,
+                                   FALSE /* no-ignore */,
+                                   TRUE /* ignore-text-mods */, ignores,
+                                   verify_touched_by_del_check, delb,
+                                   merge_b->ctx->cancel_func,
+                                   merge_b->ctx->cancel_baton,
+                                   scratch_pool);
 
-         Note that we aren't interested in changes, as we already verified
-         changes in the paths touched by the merge. And the existance of
-         other paths is enough to mark the directory edited */
-      err = svn_wc_walk_status(merge_b->ctx->wc_ctx, local_abspath,
-                               svn_depth_infinity, TRUE /* get-all */,
-                               FALSE /* no-ignore */,
-                               TRUE /* ignore-text-mods */, ignores,
-                               verify_touched_by_del_check, delb,
-                               merge_b->ctx->cancel_func,
-                               merge_b->ctx->cancel_baton,
-                               scratch_pool);
+          if (err)
+            {
+              if (err->apr_err != SVN_ERR_CEASE_INVOCATION)
+                return svn_error_trace(err);
 
-      if (err)
-        {
-          if (err->apr_err != SVN_ERR_CEASE_INVOCATION)
-            return svn_error_trace(err);
+              svn_error_clear(err);
+            }
 
-          svn_error_clear(err);
+          same = ! delb->found_edit;
         }
-
-      same = ! delb->found_edit;
     }
 
   if (same && !merge_b->dry_run)
@@ -9668,6 +9693,7 @@ do_merge(apr_hash_t **modified_subtrees,
   merge_cmd_baton_t merge_cmd_baton = { 0 };
   svn_config_t *cfg;
   const char *diff3_cmd;
+  const char *preserved_exts_str;
   int i;
   svn_boolean_t checked_mergeinfo_capability = FALSE;
   svn_ra_session_t *ra_session1 = NULL, *ra_session2 = NULL;
@@ -9728,6 +9754,11 @@ do_merge(apr_hash_t **modified_subtrees,
   if (diff3_cmd != NULL)
     SVN_ERR(svn_path_cstring_to_utf8(&diff3_cmd, diff3_cmd, scratch_pool));
 
+    /* See which files the user wants to preserve the extension of when
+     conflict files are made. */
+  svn_config_get(cfg, &preserved_exts_str, SVN_CONFIG_SECTION_MISCELLANY,
+                 SVN_CONFIG_OPTION_PRESERVED_CF_EXTS, "");
+
   /* Build the merge context baton (or at least the parts of it that
      don't need to be reset for each merge source).  */
   merge_cmd_baton.force_delete = force_delete;
@@ -9743,6 +9774,11 @@ do_merge(apr_hash_t **modified_subtrees,
   merge_cmd_baton.pool = iterpool;
   merge_cmd_baton.merge_options = merge_options;
   merge_cmd_baton.diff3_cmd = diff3_cmd;
+  merge_cmd_baton.ext_patterns = *preserved_exts_str
+                          ? svn_cstring_split(preserved_exts_str, "\n\r\t\v ",
+                                              FALSE, scratch_pool)
+                          : NULL;
+
   merge_cmd_baton.use_sleep = use_sleep;
 
   /* Do we already know the specific subtrees with mergeinfo we want
@@ -10447,15 +10483,10 @@ merge_locked(conflict_report_t **conflic
     }
   else
     {
-      merge_source_t source;
-
-      source.loc1 = source1_loc;
-      source.loc2 = source2_loc;
-      source.ancestral = FALSE;
-
       /* Build a single-item merge_source_t array. */
       merge_sources = apr_array_make(scratch_pool, 1, sizeof(merge_source_t 
*));
-      APR_ARRAY_PUSH(merge_sources, merge_source_t *) = &source;
+      APR_ARRAY_PUSH(merge_sources, merge_source_t *)
+        = merge_source_create(source1_loc, source2_loc, FALSE, scratch_pool);
     }
 
   err = do_merge(NULL, NULL, conflict_report, &use_sleep,
@@ -10761,7 +10792,7 @@ log_find_operative_revs(void *baton,
    UNMERGED_CATALOG represents the history (as mergeinfo) from
    TARGET_LOC that is not represented in SOURCE_LOC's
    explicit/inherited mergeinfo as represented by MERGED_CATALOG.
-   MERGEINFO_CATALOG may be empty if the source has no explicit or inherited
+   MERGED_CATALOG may be empty if the source has no explicit or inherited
    mergeinfo.
 
    Check that all of the unmerged revisions in UNMERGED_CATALOG's
@@ -11464,7 +11495,7 @@ find_reintegrate_merge(merge_source_t **
          prefix. */
       svn_mergeinfo_catalog_t final_unmerged_catalog = 
apr_hash_make(scratch_pool);
 
-      SVN_ERR(find_unsynced_ranges(source_loc, yc_ancestor,
+      SVN_ERR(find_unsynced_ranges(source_loc, &target->loc,
                                    unmerged_to_source_mergeinfo_catalog,
                                    merged_to_source_mergeinfo_catalog,
                                    final_unmerged_catalog,

Modified: 
subversion/branches/1.8.x-r1536854/subversion/libsvn_client/prop_commands.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.8.x-r1536854/subversion/libsvn_client/prop_commands.c?rev=1640562&r1=1640561&r2=1640562&view=diff
==============================================================================
--- subversion/branches/1.8.x-r1536854/subversion/libsvn_client/prop_commands.c 
(original)
+++ subversion/branches/1.8.x-r1536854/subversion/libsvn_client/prop_commands.c 
Wed Nov 19 14:37:04 2014
@@ -890,8 +890,14 @@ svn_client_propget5(apr_hash_t **props,
           const char *copy_root_abspath;
           svn_boolean_t is_copy;
 
-          SVN_ERR(svn_dirent_get_absolute(&local_abspath, target,
-                                          scratch_pool));
+          /* Avoid assertion on the next line when somebody accidentally asks 
for
+             a working copy revision on a URL */
+          if (svn_path_is_url(target))
+            return svn_error_create(SVN_ERR_CLIENT_VERSIONED_PATH_REQUIRED,
+                                    NULL, NULL);
+
+          SVN_ERR_ASSERT(svn_dirent_is_absolute(target));
+          local_abspath = target;
 
           if (SVN_CLIENT__REVKIND_NEEDS_WC(peg_revision->kind))
             {
@@ -1293,6 +1299,12 @@ get_remote_props(const char *path_or_url
       const char *copy_root_abspath;
       svn_boolean_t is_copy;
 
+      /* Avoid assertion on the next line when somebody accidentally asks for
+         a working copy revision on a URL */
+      if (svn_path_is_url(path_or_url))
+        return svn_error_create(SVN_ERR_CLIENT_VERSIONED_PATH_REQUIRED,
+                                NULL, NULL);
+
       SVN_ERR(svn_dirent_get_absolute(&local_abspath, path_or_url,
                                       scratch_pool));
 


Reply via email to