You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/03/16 11:10:22 UTC

svn commit: r1666947 [2/4] - in /subversion/branches/move-tracking-2: ./ subversion/ subversion/bindings/javahl/native/ subversion/bindings/javahl/tests/org/apache/subversion/javahl/ subversion/include/ subversion/include/private/ subversion/libsvn_cli...

Propchange: subversion/branches/move-tracking-2/aclocal.m4
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Mar 16 10:10:20 2015
@@ -0,0 +1,91 @@
+/subversion/branches/1.5.x-r30215/aclocal.m4:870312
+/subversion/branches/1.7.x-fs-verify/aclocal.m4:1146708,1161180
+/subversion/branches/10Gb/aclocal.m4:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
+/subversion/branches/atomic-revprop/aclocal.m4:965046-1000689
+/subversion/branches/authzperf/aclocal.m4:1615360
+/subversion/branches/auto-props-sdc/aclocal.m4:1384106-1401643
+/subversion/branches/bdb-reverse-deltas/aclocal.m4:872050-872529
+/subversion/branches/cache-server/aclocal.m4:1458643-1476567
+/subversion/branches/diff-callbacks3/aclocal.m4:870059-870761
+/subversion/branches/diff-optimizations/aclocal.m4:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/aclocal.m4:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/aclocal.m4:870728-871118
+/subversion/branches/double-delete/aclocal.m4:870511-872970
+/subversion/branches/dump-load-cross-check/aclocal.m4:1654853-1657295
+/subversion/branches/ev2-export/aclocal.m4:1325914,1332738,1413107
+/subversion/branches/explore-wc/aclocal.m4:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/aclocal.m4:871779-873302
+/subversion/branches/fs-rep-sharing/aclocal.m4:869036-873803
+/subversion/branches/fsfs-format7/aclocal.m4:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029,1498103,1498155,1500054,1507729-1507731,1507735-1507736
+/subversion/branches/fsfs-improvements/aclocal.m4:1499981-1547039
+/subversion/branches/fsfs-lock-many/aclocal.m4:1571740-1577217
+/subversion/branches/fsfs-pack/aclocal.m4:873717-874575
+/subversion/branches/fsx/aclocal.m4:1507845-1509914
+/subversion/branches/fsx-id/aclocal.m4:1645603-1649011
+/subversion/branches/gnome-keyring/aclocal.m4:870558-871410
+/subversion/branches/gpg-agent-password-store/aclocal.m4:1005036-1150766
+/subversion/branches/gtest_addition/aclocal.m4:1452117-1502138
+/subversion/branches/http-protocol-v2/aclocal.m4:874395-876041
+/subversion/branches/in-memory-cache/aclocal.m4:869829-871452
+/subversion/branches/in-repo-authz/aclocal.m4:1414342-1424779
+/subversion/branches/inheritable-props/aclocal.m4:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization/aclocal.m4:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/aclocal.m4:998649-998852
+/subversion/branches/integrate-compression-level/aclocal.m4:1068651-1072287
+/subversion/branches/integrate-io-improvements/aclocal.m4:1068684-1072297
+/subversion/branches/integrate-is-cachable/aclocal.m4:1072568-1074082
+/subversion/branches/integrate-partial-getter/aclocal.m4:1072558-1076552
+/subversion/branches/integrate-readline-speedup/aclocal.m4:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/aclocal.m4:1068695-1072516
+/subversion/branches/integrate-string-improvements/aclocal.m4:1068251-1190617
+/subversion/branches/integrate-txdelta-caching/aclocal.m4:1072541-1078213
+/subversion/branches/issue-2779-dev/aclocal.m4:965496-984198
+/subversion/branches/issue-2843-dev/aclocal.m4:871432-874179
+/subversion/branches/issue-3000/aclocal.m4:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/aclocal.m4:873375-874084
+/subversion/branches/issue-3148-dev/aclocal.m4:875193-875204
+/subversion/branches/issue-3220-dev/aclocal.m4:872210-872226
+/subversion/branches/issue-3242-dev/aclocal.m4:879653-896436
+/subversion/branches/issue-3334-dirs/aclocal.m4:875156-875867
+/subversion/branches/issue-3975/aclocal.m4:1152931-1160746
+/subversion/branches/issue-4116-dev/aclocal.m4:1424719-1425040
+/subversion/branches/issue-4194-dev/aclocal.m4:1410507-1414880
+/subversion/branches/javahl-ra/aclocal.m4:991978-1494640
+/subversion/branches/kwallet/aclocal.m4:870785-871314
+/subversion/branches/log-addressing/aclocal.m4:1509279-1546844
+/subversion/branches/log-g-performance/aclocal.m4:870941-871032
+/subversion/branches/merge-skips-obstructions/aclocal.m4:874525-874615
+/subversion/branches/multi-layer-moves/aclocal.m4:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client/aclocal.m4:870276,870376
+/subversion/branches/node_pool/aclocal.m4:1304828-1305388
+/subversion/branches/performance/aclocal.m4:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-1029336,1029339-1029340
 ,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/pin-externals/aclocal.m4:1643757-1659392
+/subversion/branches/py-tests-as-modules/aclocal.m4:956579-1033052
+/subversion/branches/ra_serf-digest-authn/aclocal.m4:875693-876404
+/subversion/branches/reintegrate-improvements/aclocal.m4:873853-874164
+/subversion/branches/remote-only-status/aclocal.m4:1581845-1586090
+/subversion/branches/revprop-cache/aclocal.m4:1298521-1326293
+/subversion/branches/revprop-caching-ng/aclocal.m4:1620597,1620599
+/subversion/branches/revprop-packing/aclocal.m4:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo/aclocal.m4:876734-878766
+/subversion/branches/svn-auth-x509/aclocal.m4:1603509-1655900
+/subversion/branches/svn-info-detail/aclocal.m4:1660035-1662618
+/subversion/branches/svn-mergeinfo-enhancements/aclocal.m4:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/aclocal.m4:918519-934609
+/subversion/branches/svn_mutex/aclocal.m4:1141683-1182099
+/subversion/branches/svnpatch-diff/aclocal.m4:865738-876477
+/subversion/branches/svnraisetc/aclocal.m4:874709-875149
+/subversion/branches/svnserve-logging/aclocal.m4:869828-870893
+/subversion/branches/tc-issue-3334/aclocal.m4:874697-874773
+/subversion/branches/tc-merge-notify/aclocal.m4:874017-874062
+/subversion/branches/tc-resolve/aclocal.m4:874191-874239
+/subversion/branches/tc_url_rev/aclocal.m4:874351-874483
+/subversion/branches/tree-conflicts/aclocal.m4:868291-873154
+/subversion/branches/tree-conflicts-notify/aclocal.m4:873926-874008
+/subversion/branches/tristate-chunked-request/aclocal.m4:1502394-1502681
+/subversion/branches/tweak-build-take-two/aclocal.m4:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls/aclocal.m4:1060426-1064427
+/subversion/branches/verify-at-commit/aclocal.m4:1462039-1462408
+/subversion/branches/verify-keep-going/aclocal.m4:1439280-1546110
+/subversion/branches/wc-collate-path/aclocal.m4:1402685-1480384
+/subversion/trunk/aclocal.m4:1606692-1663280

Propchange: subversion/branches/move-tracking-2/get-deps.sh
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Mar 16 10:10:20 2015
@@ -0,0 +1,91 @@
+/subversion/branches/1.5.x-r30215/get-deps.sh:870312
+/subversion/branches/1.7.x-fs-verify/get-deps.sh:1146708,1161180
+/subversion/branches/10Gb/get-deps.sh:1388102,1388163-1388190,1388195,1388202,1388205,1388211,1388276,1388362,1388375,1388394,1388636,1388639-1388640,1388643-1388644,1388654,1388720,1388789,1388795,1388801,1388805,1388807,1388810,1388816,1389044,1389276,1389289,1389662,1389867,1390017,1390209,1390216,1390407,1390409,1390414,1390419,1390955
+/subversion/branches/atomic-revprop/get-deps.sh:965046-1000689
+/subversion/branches/authzperf/get-deps.sh:1615360
+/subversion/branches/auto-props-sdc/get-deps.sh:1384106-1401643
+/subversion/branches/bdb-reverse-deltas/get-deps.sh:872050-872529
+/subversion/branches/cache-server/get-deps.sh:1458643-1476567
+/subversion/branches/diff-callbacks3/get-deps.sh:870059-870761
+/subversion/branches/diff-optimizations/get-deps.sh:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/get-deps.sh:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/get-deps.sh:870728-871118
+/subversion/branches/double-delete/get-deps.sh:870511-872970
+/subversion/branches/dump-load-cross-check/get-deps.sh:1654853-1657295
+/subversion/branches/ev2-export/get-deps.sh:1325914,1332738,1413107
+/subversion/branches/explore-wc/get-deps.sh:875486,875493,875497,875507,875511,875514,875559,875580-875581,875584,875587,875611,875627,875647,875667-875668,875711-875712,875733-875734,875736,875744-875748,875751,875758,875782,875795-875796,875830,875836,875838,875842,875852,875855,875864,875870,875873,875880,875885-875888,875890,875897-875898,875905,875907-875909,875935,875943-875944,875946,875979,875982-875983,875985-875986,875990,875997
+/subversion/branches/file-externals/get-deps.sh:871779-873302
+/subversion/branches/fs-rep-sharing/get-deps.sh:869036-873803
+/subversion/branches/fsfs-format7/get-deps.sh:1426304,1430673,1433848,1438408,1438982,1441129,1442051,1442068,1442504,1442910,1443171,1443803,1444690,1444693,1444695,1445040,1445080,1446103,1451129,1453590,1454307,1460579,1461851,1461865,1462837,1462904,1463120,1467362,1467382,1469487,1471208,1477166,1478055,1481447,1489817,1489949,1490673-1490674,1491784,1493042,1498029,1498103,1498155,1500054,1507729-1507731,1507735-1507736
+/subversion/branches/fsfs-improvements/get-deps.sh:1499981-1547039
+/subversion/branches/fsfs-lock-many/get-deps.sh:1571740-1577217
+/subversion/branches/fsfs-pack/get-deps.sh:873717-874575
+/subversion/branches/fsx/get-deps.sh:1507845-1509914
+/subversion/branches/fsx-id/get-deps.sh:1645603-1649011
+/subversion/branches/gnome-keyring/get-deps.sh:870558-871410
+/subversion/branches/gpg-agent-password-store/get-deps.sh:1005036-1150766
+/subversion/branches/gtest_addition/get-deps.sh:1452117-1502138
+/subversion/branches/http-protocol-v2/get-deps.sh:874395-876041
+/subversion/branches/in-memory-cache/get-deps.sh:869829-871452
+/subversion/branches/in-repo-authz/get-deps.sh:1414342-1424779
+/subversion/branches/inheritable-props/get-deps.sh:1297080-1395089
+/subversion/branches/integrate-cache-item-serialization/get-deps.sh:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/get-deps.sh:998649-998852
+/subversion/branches/integrate-compression-level/get-deps.sh:1068651-1072287
+/subversion/branches/integrate-io-improvements/get-deps.sh:1068684-1072297
+/subversion/branches/integrate-is-cachable/get-deps.sh:1072568-1074082
+/subversion/branches/integrate-partial-getter/get-deps.sh:1072558-1076552
+/subversion/branches/integrate-readline-speedup/get-deps.sh:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/get-deps.sh:1068695-1072516
+/subversion/branches/integrate-string-improvements/get-deps.sh:1068251-1190617
+/subversion/branches/integrate-txdelta-caching/get-deps.sh:1072541-1078213
+/subversion/branches/issue-2779-dev/get-deps.sh:965496-984198
+/subversion/branches/issue-2843-dev/get-deps.sh:871432-874179
+/subversion/branches/issue-3000/get-deps.sh:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/get-deps.sh:873375-874084
+/subversion/branches/issue-3148-dev/get-deps.sh:875193-875204
+/subversion/branches/issue-3220-dev/get-deps.sh:872210-872226
+/subversion/branches/issue-3242-dev/get-deps.sh:879653-896436
+/subversion/branches/issue-3334-dirs/get-deps.sh:875156-875867
+/subversion/branches/issue-3975/get-deps.sh:1152931-1160746
+/subversion/branches/issue-4116-dev/get-deps.sh:1424719-1425040
+/subversion/branches/issue-4194-dev/get-deps.sh:1410507-1414880
+/subversion/branches/javahl-ra/get-deps.sh:991978-1494640
+/subversion/branches/kwallet/get-deps.sh:870785-871314
+/subversion/branches/log-addressing/get-deps.sh:1509279-1546844
+/subversion/branches/log-g-performance/get-deps.sh:870941-871032
+/subversion/branches/merge-skips-obstructions/get-deps.sh:874525-874615
+/subversion/branches/multi-layer-moves/get-deps.sh:1239019-1300930
+/subversion/branches/nfc-nfd-aware-client/get-deps.sh:870276,870376
+/subversion/branches/node_pool/get-deps.sh:1304828-1305388
+/subversion/branches/performance/get-deps.sh:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-1029336,1029339-102934
 0,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365
+/subversion/branches/pin-externals/get-deps.sh:1643757-1659392
+/subversion/branches/py-tests-as-modules/get-deps.sh:956579-1033052
+/subversion/branches/ra_serf-digest-authn/get-deps.sh:875693-876404
+/subversion/branches/reintegrate-improvements/get-deps.sh:873853-874164
+/subversion/branches/remote-only-status/get-deps.sh:1581845-1586090
+/subversion/branches/revprop-cache/get-deps.sh:1298521-1326293
+/subversion/branches/revprop-caching-ng/get-deps.sh:1620597,1620599
+/subversion/branches/revprop-packing/get-deps.sh:1143907,1143971,1143997,1144017,1144499,1144568,1146145
+/subversion/branches/subtree-mergeinfo/get-deps.sh:876734-878766
+/subversion/branches/svn-auth-x509/get-deps.sh:1603509-1655900
+/subversion/branches/svn-info-detail/get-deps.sh:1660035-1662618
+/subversion/branches/svn-mergeinfo-enhancements/get-deps.sh:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/get-deps.sh:918519-934609
+/subversion/branches/svn_mutex/get-deps.sh:1141683-1182099
+/subversion/branches/svnpatch-diff/get-deps.sh:865738-876477
+/subversion/branches/svnraisetc/get-deps.sh:874709-875149
+/subversion/branches/svnserve-logging/get-deps.sh:869828-870893
+/subversion/branches/tc-issue-3334/get-deps.sh:874697-874773
+/subversion/branches/tc-merge-notify/get-deps.sh:874017-874062
+/subversion/branches/tc-resolve/get-deps.sh:874191-874239
+/subversion/branches/tc_url_rev/get-deps.sh:874351-874483
+/subversion/branches/tree-conflicts/get-deps.sh:868291-873154
+/subversion/branches/tree-conflicts-notify/get-deps.sh:873926-874008
+/subversion/branches/tristate-chunked-request/get-deps.sh:1502394-1502681
+/subversion/branches/tweak-build-take-two/get-deps.sh:1424288-1425049,1425051-1425613
+/subversion/branches/uris-as-urls/get-deps.sh:1060426-1064427
+/subversion/branches/verify-at-commit/get-deps.sh:1462039-1462408
+/subversion/branches/verify-keep-going/get-deps.sh:1439280-1546110
+/subversion/branches/wc-collate-path/get-deps.sh:1402685-1480384
+/subversion/trunk/get-deps.sh:1606692-1663280

Propchange: subversion/branches/move-tracking-2/subversion/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Mar 16 10:10:20 2015
@@ -82,4 +82,4 @@
 /subversion/branches/verify-at-commit/subversion:1462039-1462408
 /subversion/branches/verify-keep-going/subversion:1439280-1546110
 /subversion/branches/wc-collate-path/subversion:1402685-1480384
-/subversion/trunk/subversion:1606692-1665165
+/subversion/trunk/subversion:1606692-1666945

Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/native/RemoteSession.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/native/RemoteSession.cpp?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/bindings/javahl/native/RemoteSession.cpp (original)
+++ subversion/branches/move-tracking-2/subversion/bindings/javahl/native/RemoteSession.cpp Mon Mar 16 10:10:20 2015
@@ -877,8 +877,10 @@ RemoteSession::getLog(jobject jpaths,
                                                        true, subPool);
   if (JNIUtil::isJavaExceptionThrown())
     return;
-  const apr_array_header_t* revprops = build_string_array(revpropiter,
-                                                          false, subPool);
+  const apr_array_header_t* revprops = (jrevprops != NULL)
+                                        ? build_string_array(revpropiter,
+                                                             false, subPool)
+                                        : NULL;
   if (JNIUtil::isJavaExceptionThrown())
     return;
 

Modified: subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java (original)
+++ subversion/branches/move-tracking-2/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java Mon Mar 16 10:10:20 2015
@@ -937,6 +937,7 @@ public class SVNRemoteTests extends SVNT
                        0, false, false, false, null,
                        receiver);
         assertEquals(1, receiver.logs.size());
+        assertTrue(receiver.logs.get(0).revprops.size() > 0);
 
         receiver.logs.clear();
         session.reparent(getTestRepoUrl() + "/A");
@@ -945,6 +946,7 @@ public class SVNRemoteTests extends SVNT
                        0, 0, false, false, false, null,
                        receiver);
         assertEquals(2, receiver.logs.size());
+        assertTrue(receiver.logs.get(0).revprops.size() > 0);
     }
 
     public void testGetLogMissing() throws Exception

Modified: subversion/branches/move-tracking-2/subversion/include/private/svn_atomic.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/private/svn_atomic.h?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/private/svn_atomic.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/private/svn_atomic.h Mon Mar 16 10:10:20 2015
@@ -76,21 +76,66 @@ extern "C" {
 /** @} */
 
 /**
+ * @name Single-threaded atomic initialization
+ * @{
+ */
+
+/**
+ * Callback for svn_atomic__init_once().
+ * @return an #svn_error_t if the initialization fails.
+ * @since New in 1.10
+ */
+typedef svn_error_t *(svn_atomic__err_init_func_t)(void *baton,
+                                                   apr_pool_t *pool);
+
+/**
+ * Callback for svn_atomic__init_no_error().
+ * @return a string containing an error message if the initialization fails.
+ * @since New in 1.10
+ */
+typedef const char *(svn_atomic__str_init_func_t)(void *baton);
+
+/**
  * Call an initialization function in a thread-safe manner.
  *
  * @a global_status must be a pointer to a global, zero-initialized
- * #svn_atomic_t. @a init_func is a pointer to the function that performs
- * the actual initialization. @a baton and and @a pool are passed on to the
- * init_func for its use.
+ * #svn_atomic_t. @a err_init_func is a pointer to the function that
+ * performs the actual initialization. @a baton and and @a pool are
+ * passed on to @a err_init_func for its use.
+ *
+ * @return the error returned by @a err_init_func.
  *
  * @since New in 1.5.
  */
 svn_error_t *
 svn_atomic__init_once(volatile svn_atomic_t *global_status,
-                      svn_error_t *(*init_func)(void*,apr_pool_t*),
+                      svn_atomic__err_init_func_t err_init_func,
                       void *baton,
                       apr_pool_t* pool);
 
+/**
+ * Call an initialization function in a thread-safe manner.
+ *
+ * Unlike svn_atomic__init_once(), this function does not need a pool
+ * and does not create an #svn_error_t, and neither should the
+ * @a str_init_func implementation.
+ *
+ * @a global_status must be a pointer to a global, zero-initialized
+ * #svn_atomic_t. @a str_init_func is a pointer to the function that
+ * performs the actual initialization. @a baton is passed on to
+ * @a str_init_func for its use.
+ *
+ * @return the error string returned by @a str_init_func.
+ *
+ * @since New in 1.10.
+ */
+const char *
+svn_atomic__init_once_no_error(volatile svn_atomic_t *global_status,
+                               svn_atomic__str_init_func_t str_init_func,
+                               void *baton);
+
+/** @} */
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/move-tracking-2/subversion/include/svn_cmdline.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_cmdline.h?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_cmdline.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_cmdline.h Mon Mar 16 10:10:20 2015
@@ -374,6 +374,7 @@ svn_cmdline_create_auth_baton2(svn_auth_
  * @deprecated Provided for backward compatibility with the 1.8 API.
  * @since New in 1.6.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_cmdline_create_auth_baton(svn_auth_baton_t **ab,
                               svn_boolean_t non_interactive,

Modified: subversion/branches/move-tracking-2/subversion/include/svn_error.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_error.h?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_error.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_error.h Mon Mar 16 10:10:20 2015
@@ -455,7 +455,10 @@ svn_error_t *svn_error_purge_tracing(svn
    err->apr_err == SVN_ERR_FS_NOT_FOUND           ||        \
    err->apr_err == SVN_ERR_FS_OUT_OF_DATE         ||        \
    err->apr_err == SVN_ERR_FS_BAD_LOCK_TOKEN      ||        \
-   err->apr_err == SVN_ERR_REPOS_HOOK_FAILURE)
+   err->apr_err == SVN_ERR_REPOS_HOOK_FAILURE     ||        \
+   err->apr_err == SVN_ERR_FS_NO_SUCH_REVISION    ||        \
+   err->apr_err == SVN_ERR_FS_OUT_OF_DATE         ||        \
+   err->apr_err == SVN_ERR_FS_NOT_FILE)
 
 /**
  * Return TRUE if @a err is an error specifically related to unlocking

Modified: subversion/branches/move-tracking-2/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_error_codes.h?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_error_codes.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_error_codes.h Mon Mar 16 10:10:20 2015
@@ -1066,6 +1066,11 @@ SVN_ERROR_START
              SVN_ERR_RA_DAV_CATEGORY_START + 14,
              "The server state conflicts with the requested preconditions")
 
+  /** @since New in 1.9 */
+  SVN_ERRDEF(SVN_ERR_RA_DAV_METHOD_NOT_ALLOWED,
+             SVN_ERR_RA_DAV_CATEGORY_START + 15,
+             "The URL doesn't allow the requested method")
+
   /* ra_local errors */
 
   SVN_ERRDEF(SVN_ERR_RA_LOCAL_REPOS_NOT_FOUND,
@@ -1590,11 +1595,14 @@ SVN_ERROR_START
              "Diff data source modified unexpectedly")
 
   /* libsvn_ra_serf errors */
-  /** @since New in 1.5. */
+  /** @since New in 1.5.
+      @deprecated SSPI now handled by serf rather than libsvn_ra_serf. */
   SVN_ERRDEF(SVN_ERR_RA_SERF_SSPI_INITIALISATION_FAILED,
              SVN_ERR_RA_SERF_CATEGORY_START + 0,
              "Initialization of SSPI library failed")
-  /** @since New in 1.5. */
+  /** @since New in 1.5.
+      @deprecated Certificate verification now handled by serf rather
+                  than libsvn_ra_serf. */
   SVN_ERRDEF(SVN_ERR_RA_SERF_SSL_CERT_UNTRUSTED,
              SVN_ERR_RA_SERF_CATEGORY_START + 1,
              "Server SSL certificate untrusted")

Modified: subversion/branches/move-tracking-2/subversion/include/svn_fs.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_fs.h?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_fs.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_fs.h Mon Mar 16 10:10:20 2015
@@ -65,6 +65,30 @@ svn_fs_version(void);
 /** An object representing a Subversion filesystem.  */
 typedef struct svn_fs_t svn_fs_t;
 
+/**
+ * @defgroup svn_fs_backend_names Built-in back-ends
+ * Constants defining the currently supported built-in filesystem backends.
+ *
+ * @see svn_fs_type
+ * @{
+ */
+/** @since New in 1.1. */
+#define SVN_FS_TYPE_BDB                         "bdb"
+/** @since New in 1.1. */
+#define SVN_FS_TYPE_FSFS                        "fsfs"
+
+/**
+ * EXPERIMENTAL filesystem backend.
+ *
+ * It is not ready for general production use.  Please consult the
+ * respective release notes on suggested usage scenarios.
+ *
+ * @since New in 1.9.
+ */
+#define SVN_FS_TYPE_FSX                         "fsx"
+
+/** @} */
+
 
 /**
  * @name Filesystem configuration options
@@ -139,23 +163,10 @@ typedef struct svn_fs_t svn_fs_t;
 /* Note to maintainers: if you add further SVN_FS_CONFIG_FSFS_CACHE_* knobs,
    update fs_fs.c:verify_as_revision_before_current_plus_plus(). */
 
-/* See also svn_fs_type(). */
-/** @since New in 1.1. */
-#define SVN_FS_CONFIG_FS_TYPE                   "fs-type"
-/** @since New in 1.1. */
-#define SVN_FS_TYPE_BDB                         "bdb"
-/** @since New in 1.1. */
-#define SVN_FS_TYPE_FSFS                        "fsfs"
-
-/**
- * EXPERIMENTAL filesystem backend.
+/** Select the filesystem type. See also #svn_fs_type().
  *
- * It is not ready for general production use.  Please consult the
- * respective release notes on suggested usage scenarios.
- *
- * @since New in 1.9.
- */
-#define SVN_FS_TYPE_FSX                         "fsx"
+ * @since New in 1.1. */
+#define SVN_FS_CONFIG_FS_TYPE                   "fs-type"
 
 /** Create repository format compatible with Subversion versions
  * earlier than 1.4.
@@ -185,9 +196,9 @@ typedef struct svn_fs_t svn_fs_t;
  */
 #define SVN_FS_CONFIG_PRE_1_8_COMPATIBLE        "pre-1.8-compatible"
 
-/** Create repository format compatible with Subversion versions
- * earlier than 1.9.  The value must be a version in the same format
- * as #SVN_VER_NUMBER.
+/** Create repository format compatible with the specified Subversion
+ * release.  The value must be a version in the same format as
+ * #SVN_VER_NUMBER and cannot exceed the current version.
  *
  * @note The @c patch component would often be ignored, due to our forward
  * compatibility promises within minor release lines.  It should therefore
@@ -291,8 +302,9 @@ svn_fs_create(svn_fs_t **fs_p,
  * return a pointer to it in @a *fs_p.  If @a fs_config is not @c
  * NULL, the options it contains modify the behavior of the
  * filesystem.  The interpretation of @a fs_config is specific to the
- * filesystem back-end.  The opened filesystem may be closed by
- * destroying @a result_pool.
+ * filesystem back-end.  The opened filesystem will be allocated in
+ * @a result_pool may be closed by clearing or destroying that pool.
+ * Use @a scratch_pool for temporary allocations.
  *
  * @note The lifetime of @a fs_config must not be shorter than @a
  * result_pool's. It's a good idea to allocate @a fs_config from
@@ -346,7 +358,7 @@ typedef enum svn_fs_upgrade_notify_actio
   svn_fs_upgrade_format_bumped
 } svn_fs_upgrade_notify_action_t;
 
-/** The type of a upgrade notification function.  @a number is specifc
+/** The type of an upgrade notification function.  @a number is specifc
  * to @a action (see #svn_fs_upgrade_notify_action_t); @a action is the
  * type of action being performed.  @a baton is the corresponding baton
  * for the notification function, and @a pool can be used for temporary
@@ -374,7 +386,7 @@ typedef svn_error_t *(*svn_fs_upgrade_no
  * the user to preempt this potentially lengthy operation.
  *
  * @note You probably don't want to use this directly.  Take a look at
- * svn_repos_upgrade() instead.
+ * svn_repos_upgrade2() instead.
  *
  * @note Canceling an upgrade is legal but may leave remnants of previous
  * format data that may not be cleaned up automatically by later calls.
@@ -497,9 +509,13 @@ typedef void (*svn_fs_hotcopy_notify_t)(
  * For each revision range copied, @a notify_func will be called with
  * staring and ending revision numbers (both inclusive and not necessarily
  * different) and with the @a notify_baton.  Currently, this notification
- * is only supported in the FSFS backend.  @a notify_func may be @c NULL
+ * is not triggered by the BDB backend.  @a notify_func may be @c NULL
  * if this notification is not required.
  *
+ * The optional @a cancel_func callback will be invoked with
+ * @a cancel_baton as usual to allow the user to preempt this potentially
+ * lengthy operation.
+ *
  * Use @a scratch_pool for temporary allocations.
  *
  * @since New in 1.9.
@@ -871,25 +887,25 @@ svn_fs_access_add_lock_token(svn_fs_acce
  * @{
  */
 
-/** Defines the possible ways two arbitrary nodes may be related.
+/** Defines the possible ways two arbitrary node-revisions may be related.
  *
  * @since New in 1.9.
  */
 typedef enum svn_fs_node_relation_t
 {
-  /** The nodes are not related.
-   * Nodes from different repositories are always unrelated.
+  /** The node-revisions are not related.
+   * Node-revisions from different repositories are always unrelated.
    * #svn_fs_compare_ids would return the value -1 in this case.
    */
   svn_fs_node_unrelated = 0,
 
-  /** They are the same physical node, i.e. there is no intervening change.
+  /** They are the same node-revision, i.e. there is no intervening change.
    * However, due to lazy copying, there may be part of different parent
    * copies.  #svn_fs_compare_ids would return the value 0 in this case.
    */
   svn_fs_node_same,
 
-  /** The nodes have a common ancestor (which may be one of these nodes)
+  /** The node-revisions have a common ancestor (which may be one of them)
    * but are not the same.
    * #svn_fs_compare_ids would return the value 1 in this case.
    */
@@ -904,9 +920,9 @@ typedef struct svn_fs_id_t svn_fs_id_t;
 /** Return -1, 0, or 1 if node revisions @a a and @a b are respectively
  * unrelated, equivalent, or otherwise related (part of the same node).
  *
- * @note Using FS ID based functions is now discouraged and may be fully
- * deprecated in future releases.  New code should use #svn_fs_node_relation()
- * and #svn_fs_node_relation_t instead.
+ * @note Consider using the more expressive #svn_fs_node_relation() instead.
+ *
+ * @see #svn_fs_node_relation
  */
 int
 svn_fs_compare_ids(const svn_fs_id_t *a,
@@ -917,9 +933,9 @@ svn_fs_compare_ids(const svn_fs_id_t *a,
 /** Return TRUE if node revisions @a id1 and @a id2 are related (part of the
  * same node), else return FALSE.
  *
- * @note Using FS ID based functions is now discouraged and may be fully
- * deprecated in future releases.  New code should use #svn_fs_node_relation()
- * and #svn_fs_node_relation_t instead.
+ * @note Consider using the more expressive #svn_fs_node_relation() instead.
+ *
+ * @see #svn_fs_node_relation
  */
 svn_boolean_t
 svn_fs_check_related(const svn_fs_id_t *id1,
@@ -1844,7 +1860,7 @@ svn_fs_props_different(svn_boolean_t *di
  * at all.
  *
  * @note Prior to Subversion 1.9, this function would return false negatives
- * as well for FSFS: If @a root1 and @a root2 were both transaction roots
+ * for FSFS: If @a root1 and @a root2 were both transaction roots
  * and the proplists of both paths had been changed in their respective
  * transactions, @a changed_p would be set to #FALSE.
  */
@@ -2431,7 +2447,7 @@ svn_fs_youngest_rev(svn_revnum_t *younge
  * Set @a *supports_version to the version number of the minimum Subversion GA
  * release that can read and write @a fs.
  *
- * @see svn_repos_info_format()
+ * @see svn_repos_info_format
  *
  * @since New in 1.9.
  */
@@ -2612,7 +2628,7 @@ svn_fs_set_uuid(svn_fs_t *fs,
 
 /** Lock information for use with svn_fs_lock_many() [and svn_repos_fs_...].
  *
- * @see svn_fs_lock_target_create().
+ * @see svn_fs_lock_target_create
  *
  * @since New in 1.9.
  */
@@ -3042,7 +3058,7 @@ typedef struct svn_fs_fsfs_info_t {
    * @note Zero (0) if (but not iff) the format does not support packing. */
   svn_revnum_t min_unpacked_rev;
 
-  /* TRUE if logical addressing is enabled for this repository.
+  /** TRUE if logical addressing is enabled for this repository.
    * FALSE if repository uses physical addressing. */
   svn_boolean_t log_addressing;
   /* ### TODO: information about fsfs.conf? rep-cache.db? write locks? */
@@ -3077,10 +3093,10 @@ typedef struct svn_fs_fsx_info_t {
 
 } svn_fs_fsx_info_t;
 
-/** @see svn_fs_info()
+/** @see svn_fs_info
  * @since New in 1.9. */
 typedef struct svn_fs_info_placeholder_t {
-  /** @see svn_fs_type() */
+  /** @see svn_fs_type */
   const char *fs_type;
 
   /* Do not add new fields here, to maintain compatibility with the first
@@ -3090,10 +3106,11 @@ typedef struct svn_fs_info_placeholder_t
 /**
  * Set @a *fs_info to a struct describing @a fs.  The type of the
  * struct depends on the backend: for #SVN_FS_TYPE_FSFS, the struct will be
- * of type #svn_fs_fsfs_info_t; otherwise, the struct is guaranteed to be
+ * of type #svn_fs_fsfs_info_t; for #SVN_FS_TYPE_FSX, it will be of type
+ * #svn_fs_fsx_info_t; otherwise, the struct is guaranteed to be
  * (compatible with) #svn_fs_info_placeholder_t.
  *
- * @see #svn_fs_fsfs_info_t
+ * @see #svn_fs_fsfs_info_t, #svn_fs_fsx_info_t
  *
  * @since New in 1.9.
  */
@@ -3104,10 +3121,11 @@ svn_fs_info(const svn_fs_info_placeholde
             apr_pool_t *scratch_pool);
 
 /**
- * Return a duplicate of @a info, allocated in @a pool. The returned struct
- * will be of the same type as the passed-in struct, which itself must have
- * been returned from svn_fs_info() or svn_fs_info_dup().  No part of the new
- * structure will be shared with @a info (except static string constants).
+ * Return a duplicate of @a info, allocated in @a result_pool. The returned
+ * struct will be of the same type as the passed-in struct, which itself
+ * must have been returned from svn_fs_info() or svn_fs_info_dup().  No part
+ * of the new structure will be shared with @a info (except static string
+ * constants).  Use @a scratch_pool for temporary allocations.
  *
  * @see #svn_fs_info_placeholder_t, #svn_fs_fsfs_info_t
  *

Modified: subversion/branches/move-tracking-2/subversion/include/svn_ra.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_ra.h?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_ra.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_ra.h Mon Mar 16 10:10:20 2015
@@ -1718,9 +1718,10 @@ svn_ra_get_repos_root(svn_ra_session_t *
 /**
  * Set @a *locations to the locations (at the repository revisions
  * @a location_revisions) of the file identified by @a path in
- * @a peg_revision.  @a path is relative to the URL to which
- * @a session was opened.  @a location_revisions is an array of
- * @c svn_revnum_t's.  @a *locations will be a mapping from the revisions to
+ * @a peg_revision (passing @c SVN_INVALID_REVNUM is an error).
+ * @a path is relative to the URL to which @a session was opened.
+ * @a location_revisions is an array of @c svn_revnum_t's.
+ * @a *locations will be a mapping from the revisions to
  * their appropriate absolute paths.  If the file doesn't exist in a
  * location_revision, that revision will be ignored.
  *

Modified: subversion/branches/move-tracking-2/subversion/include/svn_repos.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/include/svn_repos.h?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/include/svn_repos.h (original)
+++ subversion/branches/move-tracking-2/subversion/include/svn_repos.h Mon Mar 16 10:10:20 2015
@@ -559,15 +559,18 @@ svn_repos_has_capability(svn_repos_t *re
                          apr_pool_t *pool);
 
 /**
- * Return a set capabilities supported by the running Subversion library and by
- * @a repos.  (Capabilities supported by this version of Subversion but not by
- * @a repos are not listed.  This may happen when svn_repos_upgrade2() has not
- * been called after a software upgrade.)
+ * Return a set of @a capabilities supported by the running Subversion
+ * library and by @a repos.  (Capabilities supported by this version of
+ * Subversion but not by @a repos are not listed.  This may happen when
+ * svn_repos_upgrade2() has not been called after a software upgrade.)
  *
- * The set is represented as a hash whose keys are the set members.  The values
- * are not defined.
+ * The set is represented as a hash whose const char * keys are the set
+ * members.  The values are not defined.
  *
- * @see svn_repos_info_format()
+ * Allocate @a capabilities in @a result_pool and use @a scratch_pool for
+ * temporary allocations.
+ *
+ * @see svn_repos_info_format
  *
  * @since New in 1.9.
  */
@@ -628,6 +631,8 @@ svn_repos_fs(svn_repos_t *repos);
 /** Return the type of filesystem associated with repository object
  * @a repos allocated in @a pool.
  *
+ * @see #svn_fs_backend_names
+ *
  * @since New in 1.9.
  */
 const char *
@@ -650,10 +655,14 @@ svn_repos_fs_type(svn_repos_t *repos, ap
  * called with the @a notify_baton and a notification structure containing
  * appropriate values in @c start_revision and @c end_revision (both
  * inclusive). @c start_revision might be equal to @c end_revision in
- * case the copied range consists of a single revision. Currently, this
- * notification is only supported for FSFS repositories. @a notify_func
+ * case the copied range consists of a single revision.  Currently, this
+ * notification is not triggered by the BDB backend. @a notify_func
  * may be @c NULL if this notification is not required.
  *
+ * The optional @a cancel_func callback will be invoked with
+ * @a cancel_baton as usual to allow the user to preempt this potentially
+ * lengthy operation.
+ *
  * @since New in 1.9.
  */
 svn_error_t *
@@ -1523,19 +1532,19 @@ svn_repos_replay(svn_fs_root_t *root,
  * after the commit has succeeded) @c close_edit will invoke
  * @a commit_callback with a filled-in #svn_commit_info_t *, @a commit_baton,
  * and @a pool or some subpool thereof as arguments.  The @c repos_root field
- * of the #svn_commit_info_t is null.  If @a commit_callback
+ * of the #svn_commit_info_t is @c NULL.  If @a commit_callback
  * returns an error, that error will be returned from @c close_edit,
  * otherwise if there was a post-commit hook failure, then that error
  * will be returned with code SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED.
- * (Note that prior to Subversion 1.6, @a commit_callback cannot be NULL; if
- * you don't need a callback, pass a dummy function.)
+ * (Note that prior to Subversion 1.6, @a commit_callback cannot be @c NULL;
+ * if you don't need a callback, pass a dummy function.)
  *
  * Calling @a (*editor)->abort_edit aborts the commit, and will also
  * abort the commit transaction unless @a txn was supplied (not @c
  * NULL).  Callers who supply their own transactions are responsible
  * for cleaning them up (either by committing them, or aborting them).
  *
- * @since New in 1.5. Since 1.6, @a commit_callback can be null.
+ * @since New in 1.5. Since 1.6, @a commit_callback can be @c NULL.
  *
  * @note Yes, @a repos_url_decoded is a <em>decoded</em> URL.  We realize
  * that's sorta wonky.  Sorry about that.
@@ -2083,7 +2092,7 @@ svn_repos_fs_get_mergeinfo(svn_mergeinfo
  * the revision range for @a include_merged_revision @c FALSE reporting by
  * switching @a start with @a end.
  *
- * @note Prior to Subversion 1.9, this function may accept delta handlers
+ * @note Prior to Subversion 1.9, this function may request delta handlers
  * from @a handler even for empty text deltas.  Starting with 1.9, the
  * delta handler / baton return arguments passed to @a handler will be
  * #NULL unless there is an actual difference in the file contents between
@@ -2269,6 +2278,8 @@ svn_repos_fs_begin_txn_for_update(svn_fs
  * The lock and path passed to @a lock_callback will be allocated in
  * @a result_pool.  Use @a scratch_pool for temporary allocations.
  *
+ * @see svn_fs_lock_many
+ *
  * @since New in 1.9.
  */
 svn_error_t *
@@ -2321,6 +2332,8 @@ svn_repos_fs_lock(svn_lock_t **lock,
  * The path passed to @a lock_callback will be allocated in @a result_pool.
  * Use @a scratch_pool for temporary allocations.
  *
+ * @see svn_fs_unlock_many
+ *
  * @since New in 1.9.
  */
 svn_error_t *
@@ -2702,12 +2715,13 @@ svn_repos_node_from_baton(void *edit_bat
  *
  * Set @a *repos_format to the repository format number of @a repos, which is
  * an integer that increases when incompatible changes are made (such as
- * by #svn_repos_upgrade).
+ * by #svn_repos_upgrade2).
  *
- * Set @a *supports_version to the version number of the minimum Subversion GA
- * release that can read and write @a repos.
+ * Set @a *supports_version to the version number of the minimum Subversion
+ * GA release that can read and write @a repos; allocate it in
+ * @a result_pool.  Use @a scratch_pool for temporary allocations.
  *
- * @see svn_fs_info_format(), svn_repos_capabilities()
+ * @see svn_fs_info_format, svn_repos_capabilities
  *
  * @since New in 1.9.
  */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_client/merge.c Mon Mar 16 10:10:20 2015
@@ -1267,13 +1267,14 @@ record_skip(merge_cmd_baton_t *merge_b,
             svn_node_kind_t kind,
             svn_wc_notify_action_t action,
             svn_wc_notify_state_t state,
+            struct merge_dir_baton_t *pdb,
             apr_pool_t *scratch_pool)
 {
   if (merge_b->record_only)
     return SVN_NO_ERROR; /* ### Why? - Legacy compatibility */
 
-  if (merge_b->merge_source.ancestral
-      || merge_b->reintegrate_merge)
+  if ((merge_b->merge_source.ancestral || merge_b->reintegrate_merge)
+      && !(pdb && pdb->shadowed))
     {
       store_path(merge_b->skipped_abspaths, local_abspath);
     }
@@ -2020,7 +2021,8 @@ merge_file_changed(const char *relpath,
           /* We haven't notified for this node yet: report a skip */
           SVN_ERR(record_skip(merge_b, local_abspath, svn_node_file,
                               svn_wc_notify_update_shadowed_update,
-                              fb->skip_reason, scratch_pool));
+                              fb->skip_reason, fb->parent_baton,
+                              scratch_pool));
         }
 
       return SVN_NO_ERROR;
@@ -2190,7 +2192,8 @@ merge_file_added(const char *relpath,
           /* We haven't notified for this node yet: report a skip */
           SVN_ERR(record_skip(merge_b, local_abspath, svn_node_file,
                               svn_wc_notify_update_shadowed_add,
-                              fb->skip_reason, scratch_pool));
+                              fb->skip_reason, fb->parent_baton,
+                              scratch_pool));
         }
 
       return SVN_NO_ERROR;
@@ -2401,7 +2404,8 @@ merge_file_deleted(const char *relpath,
           /* We haven't notified for this node yet: report a skip */
           SVN_ERR(record_skip(merge_b, local_abspath, svn_node_file,
                               svn_wc_notify_update_shadowed_delete,
-                              fb->skip_reason, scratch_pool));
+                              fb->skip_reason, fb->parent_baton,
+                              scratch_pool));
         }
 
       return SVN_NO_ERROR;
@@ -2790,6 +2794,12 @@ merge_dir_opened(void **new_dir_baton,
 
               db->tree_conflict_reason = added ? svn_wc_conflict_reason_added
                                                : svn_wc_conflict_reason_obstructed;
+
+              if ((merge_b->merge_source.ancestral || merge_b->reintegrate_merge)
+                  && !(pdb && pdb->shadowed))
+                {
+                  store_path(merge_b->skipped_abspaths, local_abspath);
+                }
             }
         }
 
@@ -2917,7 +2927,8 @@ merge_dir_changed(const char *relpath,
           /* We haven't notified for this node yet: report a skip */
           SVN_ERR(record_skip(merge_b, local_abspath, svn_node_dir,
                               svn_wc_notify_update_shadowed_update,
-                              db->skip_reason, scratch_pool));
+                              db->skip_reason, db->parent_baton,
+                              scratch_pool));
         }
 
       return SVN_NO_ERROR;
@@ -3002,7 +3013,8 @@ merge_dir_added(const char *relpath,
           /* We haven't notified for this node yet: report a skip */
           SVN_ERR(record_skip(merge_b, local_abspath, svn_node_dir,
                               svn_wc_notify_update_shadowed_add,
-                              db->skip_reason, scratch_pool));
+                              db->skip_reason, db->parent_baton,
+                              scratch_pool));
         }
 
       return SVN_NO_ERROR;
@@ -3169,7 +3181,8 @@ merge_dir_deleted(const char *relpath,
           /* We haven't notified for this node yet: report a skip */
           SVN_ERR(record_skip(merge_b, local_abspath, svn_node_dir,
                               svn_wc_notify_update_shadowed_delete,
-                              db->skip_reason, scratch_pool));
+                              db->skip_reason, db->parent_baton,
+                              scratch_pool));
         }
 
       return SVN_NO_ERROR;
@@ -3351,13 +3364,14 @@ merge_node_absent(const char *relpath,
                   apr_pool_t *scratch_pool)
 {
   merge_cmd_baton_t *merge_b = processor->baton;
+  struct merge_dir_baton_t *db = dir_baton;
 
   const char *local_abspath = svn_dirent_join(merge_b->target->abspath,
                                               relpath, scratch_pool);
 
   SVN_ERR(record_skip(merge_b, local_abspath, svn_node_unknown,
                       svn_wc_notify_skip, svn_wc_notify_state_missing,
-                      scratch_pool));
+                      db, scratch_pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_delta/compat.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_delta/compat.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_delta/compat.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_delta/compat.c Mon Mar 16 10:10:20 2015
@@ -816,8 +816,9 @@ static svn_error_t *
 open_delta_target(svn_stream_t **stream, void *baton,
                 apr_pool_t *result_pool, apr_pool_t *scratch_pool)
 {
-  const char **delta_target = baton;
-  return svn_stream_open_unique(stream, delta_target, NULL,
+  struct change_node *change = baton;
+  return svn_stream_open_unique(stream, &change->contents_abspath,
+                                NULL,
                                 svn_io_file_del_on_pool_cleanup,
                                 result_pool, scratch_pool);
 }
@@ -850,8 +851,7 @@ ev2_apply_textdelta(void *file_baton,
                                             FALSE, handler_pool);
 
   change->contents_changed = TRUE;
-  target = svn_stream_lazyopen_create(open_delta_target,
-                                      &change->contents_abspath,
+  target = svn_stream_lazyopen_create(open_delta_target, change,
                                       FALSE, fb->eb->edit_pool);
 
   svn_txdelta_apply(hb->source, target,
@@ -1223,15 +1223,23 @@ alter_file_cb(void *baton,
               apr_pool_t *scratch_pool)
 {
   struct editor_baton *eb = baton;
-  const char *tmp_filename;
   svn_stream_t *tmp_stream;
-  svn_checksum_t *md5_checksum;
   struct change_node *change = insert_change(relpath, eb->changes);
 
+  /* Note: this node may already have information in CHANGE as a result
+     of an earlier copy/move operation.  */
+
   /* ### should we verify the kind is truly a file?  */
+  change->kind = svn_node_file;
+  change->changing = revision;
+  if (props != NULL)
+    change->props = svn_prop_hash_dup(props, eb->edit_pool);
 
   if (contents)
     {
+      const char *tmp_filename;
+      svn_checksum_t *md5_checksum;
+
       /* We may need to re-checksum these contents */
       if (checksum && checksum->kind == svn_checksum_md5)
         md5_checksum = (svn_checksum_t *)checksum;
@@ -1246,17 +1254,7 @@ alter_file_cb(void *baton,
                                      eb->edit_pool, scratch_pool));
       SVN_ERR(svn_stream_copy3(contents, tmp_stream, NULL, NULL,
                                scratch_pool));
-    }
 
-  /* Note: this node may already have information in CHANGE as a result
-     of an earlier copy/move operation.  */
-
-  change->kind = svn_node_file;
-  change->changing = revision;
-  if (props != NULL)
-    change->props = svn_prop_hash_dup(props, eb->edit_pool);
-  if (contents != NULL)
-    {
       change->contents_changed = TRUE;
       change->contents_abspath = tmp_filename;
       change->checksum = svn_checksum_dup(md5_checksum, eb->edit_pool);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_diff/diff_file.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_diff/diff_file.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_diff/diff_file.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_diff/diff_file.c Mon Mar 16 10:10:20 2015
@@ -1956,7 +1956,7 @@ typedef struct context_saver_t {
   const char **data; /* const char *data[context_size] */
   apr_size_t *len;   /* apr_size_t len[context_size] */
   apr_size_t next_slot;
-  apr_size_t total_written;
+  apr_ssize_t total_writes;
 } context_saver_t;
 
 
@@ -1972,7 +1972,7 @@ context_saver_stream_write(void *baton,
       cs->data[cs->next_slot] = data;
       cs->len[cs->next_slot] = *len;
       cs->next_slot = (cs->next_slot + 1) % cs->context_size;
-      cs->total_written++;
+      cs->total_writes++;
     }
   return SVN_NO_ERROR;
 }
@@ -2252,7 +2252,7 @@ output_conflict_with_context(svn_diff3__
      trailing context)?  If so, flush it. */
   if (btn->output_stream == btn->context_saver->stream)
     {
-      if (btn->context_saver->total_written > btn->context_size)
+      if (btn->context_saver->total_writes > btn->context_size)
         SVN_ERR(svn_stream_puts(btn->real_output_stream, "@@\n"));
       SVN_ERR(flush_context_saver(btn->context_saver, btn->real_output_stream));
     }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_base/bdb/rev-table.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_base/bdb/rev-table.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_base/bdb/rev-table.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_base/bdb/rev-table.c Mon Mar 16 10:10:20 2015
@@ -79,6 +79,9 @@ svn_fs_bdb__get_rev(revision_t **revisio
      numbers begin with one.  */
   db_recno_t recno = (db_recno_t) rev + 1;
 
+  if (!SVN_IS_VALID_REVNUM(rev))
+    return svn_fs_base__err_dangling_rev(fs, rev);
+
   svn_fs_base__trail_debug(trail, "revisions", "get");
   db_err = bfd->revisions->get(bfd->revisions, trail->db_txn,
                                svn_fs_base__set_dbt(&key, &recno,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_base/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_base/lock.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_base/lock.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_base/lock.c Mon Mar 16 10:10:20 2015
@@ -39,6 +39,7 @@
 #include "private/svn_fs_util.h"
 #include "private/svn_subr_private.h"
 #include "private/svn_dep_compat.h"
+#include "revs-txns.h"
 
 
 /* Add LOCK and its associated LOCK_TOKEN (associated with PATH) as
@@ -241,8 +242,10 @@ svn_fs_base__lock(svn_fs_t *fs,
 {
   apr_hash_index_t *hi;
   svn_error_t *cb_err = SVN_NO_ERROR;
+  svn_revnum_t youngest_rev = SVN_INVALID_REVNUM;
 
   SVN_ERR(svn_fs__check_fs(fs, TRUE));
+  SVN_ERR(svn_fs_base__youngest_rev(&youngest_rev, fs, scratch_pool));
 
   for (hi = apr_hash_first(scratch_pool, targets); hi; hi = apr_hash_next(hi))
     {
@@ -250,7 +253,7 @@ svn_fs_base__lock(svn_fs_t *fs,
       const char *path = apr_hash_this_key(hi);
       const svn_fs_lock_target_t *target = apr_hash_this_val(hi);
       svn_lock_t *lock;
-      svn_error_t *err;
+      svn_error_t *err = NULL;
 
       args.lock_p = &lock;
       args.path = svn_fs__canonicalize_abspath(path, result_pool);
@@ -262,8 +265,17 @@ svn_fs_base__lock(svn_fs_t *fs,
       args.current_rev = target->current_rev;
       args.result_pool = result_pool;
 
-      err = svn_fs_base__retry_txn(fs, txn_body_lock, &args, TRUE,
-                                   scratch_pool);
+      if (SVN_IS_VALID_REVNUM(target->current_rev))
+        {
+          if (target->current_rev > youngest_rev)
+            err = svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, NULL,
+                                    _("No such revision %ld"),
+                                    target->current_rev);
+        }
+
+      if (!err)
+        err = svn_fs_base__retry_txn(fs, txn_body_lock, &args, TRUE,
+                                     scratch_pool);
       if (!cb_err && lock_callback)
         cb_err = lock_callback(lock_baton, args.path, lock, err, scratch_pool);
       svn_error_clear(err);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/id.c Mon Mar 16 10:10:20 2015
@@ -365,14 +365,21 @@ svn_fs_fs__id_check_related(const svn_fs
   if (a == b)
     return TRUE;
 
-  /* If both node_ids start with _ and they have differing transaction
-     IDs, then it is impossible for them to be related. */
-  if (id_a->private_id.node_id.revision == SVN_INVALID_REVNUM)
+  /* If both node_ids have been created within _different_ transactions
+     (and are still uncommitted), then it is impossible for them to be
+     related.
+
+     Due to our txn-local temporary IDs, however, they might have been
+     given the same temporary node ID.  We need to detect that case.
+   */
+  if (   id_a->private_id.node_id.revision == SVN_INVALID_REVNUM
+      && id_b->private_id.node_id.revision == SVN_INVALID_REVNUM)
     {
-      if (   !svn_fs_fs__id_part_eq(&id_a->private_id.txn_id,
-                                    &id_b->private_id.txn_id)
-          || !svn_fs_fs__id_txn_used(&id_a->private_id.txn_id))
+      if (!svn_fs_fs__id_part_eq(&id_a->private_id.txn_id,
+                                 &id_b->private_id.txn_id))
         return FALSE;
+
+      /* At this point, matching node_ids implies relatedness. */
     }
 
   return svn_fs_fs__id_part_eq(&id_a->private_id.node_id,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/lock.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/lock.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/lock.c Mon Mar 16 10:10:20 2015
@@ -715,6 +715,7 @@ check_lock(svn_error_t **fs_err,
            const svn_fs_lock_target_t *target,
            struct lock_baton *lb,
            svn_fs_root_t *root,
+           svn_revnum_t youngest_rev,
            apr_pool_t *pool)
 {
   svn_node_kind_t kind;
@@ -751,6 +752,15 @@ check_lock(svn_error_t **fs_err,
   if (SVN_IS_VALID_REVNUM(target->current_rev))
     {
       svn_revnum_t created_rev;
+
+      if (target->current_rev > youngest_rev)
+        {
+          *fs_err = svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, NULL,
+                                      _("No such revision %ld"),
+                                      target->current_rev);
+          return SVN_NO_ERROR;
+        }
+
       SVN_ERR(svn_fs_fs__node_created_rev(&created_rev, root, path,
                                           pool));
 
@@ -856,7 +866,7 @@ lock_body(void *baton, apr_pool_t *pool)
       info.fs_err = SVN_NO_ERROR;
 
       SVN_ERR(check_lock(&info.fs_err, info.path, item->value, lb, root,
-                         iterpool));
+                         youngest, iterpool));
 
       /* If no error occurred while pre-checking, schedule the index updates for
          this path. */

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/tree.c Mon Mar 16 10:10:20 2015
@@ -1328,8 +1328,8 @@ fs_node_relation(svn_fs_node_relation_t
                  apr_pool_t *pool)
 {
   dag_node_t *node;
-  const svn_fs_id_t *id;
-  svn_fs_fs__id_part_t rev_item_a, rev_item_b, node_id_a, node_id_b;
+  const svn_fs_id_t *id_a, *id_b;
+  svn_fs_fs__id_part_t node_id_a, node_id_b;
 
   /* Root paths are a common special case. */
   svn_boolean_t a_is_root_dir
@@ -1337,6 +1337,11 @@ fs_node_relation(svn_fs_node_relation_t
   svn_boolean_t b_is_root_dir
     = (path_b[0] == '\0') || ((path_b[0] == '/') && (path_b[1] == '\0'));
 
+  /* Another useful thing to know: Both are txns but not the same txn. */
+  svn_boolean_t different_txn
+    = root_a->is_txn_root && root_b->is_txn_root
+        && strcmp(root_a->txn, root_b->txn);
+
   /* Path from different repository are always unrelated. */
   if (root_a->fs != root_b->fs)
     {
@@ -1344,19 +1349,11 @@ fs_node_relation(svn_fs_node_relation_t
       return SVN_NO_ERROR;
     }
 
-  /* Nodes from different transactions are never related. */
-  if (root_a->is_txn_root && root_b->is_txn_root
-      && strcmp(root_a->txn, root_b->txn))
-    {
-      *relation = svn_fs_node_unrelated;
-      return SVN_NO_ERROR;
-    }
-
   /* Are both (!) root paths? Then, they are related and we only test how
    * direct the relation is. */
   if (a_is_root_dir && b_is_root_dir)
     {
-      *relation = root_a->rev == root_b->rev
+      *relation = ((root_a->rev == root_b->rev) && !different_txn)
                 ? svn_fs_node_same
                 : svn_fs_node_common_ancestor;
       return SVN_NO_ERROR;
@@ -1365,21 +1362,35 @@ fs_node_relation(svn_fs_node_relation_t
   /* We checked for all separations between ID spaces (repos, txn).
    * Now, we can simply test for the ID values themselves. */
   SVN_ERR(get_dag(&node, root_a, path_a, pool));
-  id = svn_fs_fs__dag_get_id(node);
-  rev_item_a = *svn_fs_fs__id_rev_item(id);
-  node_id_a = *svn_fs_fs__id_node_id(id);
+  id_a = svn_fs_fs__dag_get_id(node);
+  node_id_a = *svn_fs_fs__id_node_id(id_a);
 
   SVN_ERR(get_dag(&node, root_b, path_b, pool));
-  id = svn_fs_fs__dag_get_id(node);
-  rev_item_b = *svn_fs_fs__id_rev_item(id);
-  node_id_b = *svn_fs_fs__id_node_id(id);
+  id_b = svn_fs_fs__dag_get_id(node);
+  node_id_b = *svn_fs_fs__id_node_id(id_b);
+
+  /* Noderevs from different nodes are unrelated. */
+  if (!svn_fs_fs__id_part_eq(&node_id_a, &node_id_b))
+    {
+      *relation = svn_fs_node_unrelated;
+      return SVN_NO_ERROR;
+    }
 
-  if (svn_fs_fs__id_part_eq(&rev_item_a, &rev_item_b))
+  /* Noderevs have the same node-ID now. So, they *seem* to be related.
+   *
+   * Special case: Different txns may create the same (txn-local) node ID.
+   * Only when they are committed can they actually be related to others. */
+  if (different_txn && node_id_a.revision == SVN_INVALID_REVNUM)
+    {
+      *relation = svn_fs_node_unrelated;
+      return SVN_NO_ERROR;
+    }
+
+  /* The noderevs are actually related.  Are they the same? */
+  if (svn_fs_fs__id_eq(id_a, id_b))
     *relation = svn_fs_node_same;
-  else if (svn_fs_fs__id_part_eq(&node_id_a, &node_id_b))
-    *relation = svn_fs_node_common_ancestor;
   else
-    *relation = svn_fs_node_unrelated;
+    *relation = svn_fs_node_common_ancestor;
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/verify.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/verify.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/verify.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_fs/verify.c Mon Mar 16 10:10:20 2015
@@ -463,7 +463,7 @@ expect_buffer_nul(apr_file_t *file,
 
   /* read the whole data block; error out on failure */
   data.chunks[(size - 1)/ sizeof(apr_uint64_t)] = 0;
-  SVN_ERR(svn_io_file_read_full2(file, data.buffer, size, NULL, NULL, pool));
+  SVN_ERR(svn_io_file_read_full2(file, data.buffer, (apr_size_t)size, NULL, NULL, pool));
 
   /* chunky check */
   for (i = 0; i < size / sizeof(apr_uint64_t); ++i)

Propchange: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Mar 16 10:10:20 2015
@@ -90,4 +90,4 @@
 /subversion/branches/verify-keep-going/subversion/libsvn_fs_x:1439280-1492639,1546002-1546110
 /subversion/branches/wc-collate-path/subversion/libsvn_fs_x:1402685-1480384
 /subversion/trunk/subversion/libsvn_fs_fs:1415133-1596500,1596567,1597414,1597989,1598273,1599140,1600872,1601633,1603485-1603487,1603499,1603605,1604128,1604188,1604413-1604414,1604416-1604417,1604421,1604442,1604700,1604717,1604720,1604726,1604755,1604794,1604802,1604824,1604836,1604844,1604902-1604903,1604911,1604925,1604933,1604947,1605059-1605060,1605064-1605065,1605068,1605071-1605073,1605075,1605123,1605188-1605189,1605191,1605197,1605444,1605633,1606132,1606142,1606144,1606514,1606526,1606528,1606551,1606554,1606564,1606598-1606599,1606656,1606658,1606662,1606744,1606840,1607085,1607572,1612407,1612810,1613339,1613872,1614611,1615348,1615351-1615352,1615356,1616338-1616339,1616613,1617586,1617688,1618138,1618151,1618153,1618226,1618641,1618653,1618662,1619068,1619358,1619413,1619769,1619774,1620602,1620909,1620912,1620928,1620930,1621275,1621635,1622931,1622937,1622942,1622946,1622959-1622960,1622963,1622987,1623007,1623368,1623373,1623377,1623379,1623381,1623398,1623402,162
 4011,1624265,1624512,1626246,1626871,1626873,1626886,1627497-1627498,1627502,1627947-1627949,1627966,1628083,1628093,1628158-1628159,1628161,1628392-1628393,1628415,1628427,1628676,1628738,1628762,1628764,1629854-1629855,1629857,1629865,1629873,1629875,1629879,1630067,1630070,1631049-1631051,1631075,1631115,1631171,1631180,1631185-1631186,1631196-1631197,1631239-1631240,1631548,1631550,1631563,1631567,1631588,1631598,1632646,1632776,1632849,1632851-1632853,1632856-1632857,1632868,1632908,1632926,1633232,1633617-1633618,1634872,1634875,1634879-1634880,1634920,1636478,1636483,1636629,1636644,1637184,1637186,1637330,1637358,1637363,1637393,1639319,1639322,1639335,1639348,1639352,1639355,1639358,1639414,1639419,1639426,1639430,1639436,1639440,1639549,1640061-1640062,1640197,1640915,1640966,1641013,1643139,1643233,1645567,1646021,1646712,1646716,1647537,1647540-1647541,1647820,1647905,1648230,1648238,1648241-1648243,1648253,1648272,1648532,1648537-1648539,1648542,1648591,1648612,1653608,
 1658482
-/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1606692-1660163
+/subversion/trunk/subversion/libsvn_fs_x:1414756-1509914,1606692-1666945

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/fs_id.c Mon Mar 16 10:10:20 2015
@@ -219,12 +219,6 @@ id_compare(const svn_fs_id_t *a,
   if (svn_fs_x__id_eq(&id_a->noderev_id, &id_b->noderev_id))
     return svn_fs_node_same;
 
-  /* Items from different txns are unrelated. */
-  if (   svn_fs_x__is_txn(id_a->noderev_id.change_set)
-      && svn_fs_x__is_txn(id_b->noderev_id.change_set)
-      && id_a->noderev_id.change_set != id_b->noderev_id.change_set)
-    return svn_fs_node_unrelated;
-
   /* Fetch the nodesrevs, compare the IDs of the nodes they belong to and
      clean up any temporaries.  If we can't find one of the noderevs, don't
      get access to the FS etc., report the IDs as "unrelated" as only

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/lock.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/lock.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/lock.c Mon Mar 16 10:10:20 2015
@@ -755,6 +755,7 @@ check_lock(svn_error_t **fs_err,
            const svn_fs_lock_target_t *target,
            lock_baton_t *lb,
            svn_fs_root_t *root,
+           svn_revnum_t youngest_rev,
            apr_pool_t *pool)
 {
   svn_node_kind_t kind;
@@ -791,6 +792,15 @@ check_lock(svn_error_t **fs_err,
   if (SVN_IS_VALID_REVNUM(target->current_rev))
     {
       svn_revnum_t created_rev;
+
+      if (target->current_rev > youngest_rev)
+        {
+          *fs_err = svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, NULL,
+                                      _("No such revision %ld"),
+                                      target->current_rev);
+          return SVN_NO_ERROR;
+        }
+
       SVN_ERR(svn_fs_x__node_created_rev(&created_rev, root, path,
                                          pool));
 
@@ -895,7 +905,8 @@ lock_body(void *baton, apr_pool_t *pool)
       svn_pool_clear(iterpool);
 
       info.path = item->key;
-      SVN_ERR(check_lock(&info.fs_err, info.path, target, lb, root, iterpool));
+      SVN_ERR(check_lock(&info.fs_err, info.path, target, lb, root,
+                         youngest, iterpool));
       info.lock = NULL;
       info.component = NULL;
       APR_ARRAY_PUSH(lb->infos, lock_info_t) = info;

Modified: subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_fs_x/tree.c Mon Mar 16 10:10:20 2015
@@ -1342,19 +1342,15 @@ x_node_relation(svn_fs_node_relation_t *
       return SVN_NO_ERROR;
     }
 
-  /* Nodes from different transactions are never related. */
-  if (root_a->is_txn_root && root_b->is_txn_root
-      && strcmp(root_a->txn, root_b->txn))
-    {
-      *relation = svn_fs_node_unrelated;
-      return SVN_NO_ERROR;
-    }
-
   /* Are both (!) root paths? Then, they are related and we only test how
    * direct the relation is. */
   if (a_is_root_dir && b_is_root_dir)
     {
-      *relation = root_a->rev == root_b->rev
+      svn_boolean_t different_txn
+        = root_a->is_txn_root && root_b->is_txn_root
+            && strcmp(root_a->txn, root_b->txn);
+
+      *relation = ((root_a->rev == root_b->rev) && !different_txn)
                 ? svn_fs_node_same
                 : svn_fs_node_common_ancestor;
       return SVN_NO_ERROR;
@@ -1370,6 +1366,8 @@ x_node_relation(svn_fs_node_relation_t *
   noderev_id_b = *svn_fs_x__dag_get_id(node);
   SVN_ERR(svn_fs_x__dag_get_node_id(&node_id_b, node));
 
+  /* In FSX, even in-txn IDs are globally unique.
+   * So, we can simply compare them. */
   if (svn_fs_x__id_eq(&noderev_id_a, &noderev_id_b))
     *relation = svn_fs_node_same;
   else if (svn_fs_x__id_eq(&node_id_a, &node_id_b))

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra/ra_loader.c Mon Mar 16 10:10:20 2015
@@ -1450,6 +1450,7 @@ svn_error_t *svn_ra_get_locations(svn_ra
 {
   svn_error_t *err;
 
+  SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(peg_revision));
   SVN_ERR_ASSERT(svn_relpath_is_canonical(path));
   err = session->vtable->get_locations(session, locations, path,
                                        peg_revision, location_revisions, pool);
@@ -1617,6 +1618,8 @@ svn_error_t *svn_ra_replay(svn_ra_sessio
                            void *edit_baton,
                            apr_pool_t *pool)
 {
+  SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(revision)
+                 && SVN_IS_VALID_REVNUM(low_water_mark));
   return session->vtable->replay(session, revision, low_water_mark,
                                  text_deltas, editor, edit_baton, pool);
 }
@@ -1684,7 +1687,14 @@ svn_ra_replay_range(svn_ra_session_t *se
                     void *replay_baton,
                     apr_pool_t *pool)
 {
-  svn_error_t *err =
+  svn_error_t *err;
+
+  SVN_ERR_ASSERT(SVN_IS_VALID_REVNUM(start_revision)
+                 && SVN_IS_VALID_REVNUM(end_revision)
+                 && start_revision <= end_revision
+                 && SVN_IS_VALID_REVNUM(low_water_mark));
+
+  err =
     session->vtable->replay_range(session, start_revision, end_revision,
                                   low_water_mark, text_deltas,
                                   revstart_func, revfinish_func,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_local/ra_plugin.c Mon Mar 16 10:10:20 2015
@@ -1896,23 +1896,13 @@ svn_ra_local__get_inherited_props(svn_ra
                                   apr_pool_t *scratch_pool)
 {
   svn_fs_root_t *root;
-  svn_revnum_t youngest_rev;
   svn_ra_local__session_baton_t *sess = session->priv;
   const char *abs_path = svn_fspath__join(sess->fs_path->data, path,
                                           scratch_pool);
   svn_node_kind_t node_kind;
 
   /* Open the revision's root. */
-  if (! SVN_IS_VALID_REVNUM(revision))
-    {
-      SVN_ERR(svn_fs_youngest_rev(&youngest_rev, sess->fs, scratch_pool));
-      SVN_ERR(svn_fs_revision_root(&root, sess->fs, youngest_rev,
-                                   scratch_pool));
-    }
-  else
-    {
-      SVN_ERR(svn_fs_revision_root(&root, sess->fs, revision, scratch_pool));
-    }
+  SVN_ERR(svn_fs_revision_root(&root, sess->fs, revision, scratch_pool));
 
   SVN_ERR(svn_fs_check_path(&node_kind, root, abs_path, scratch_pool));
   if (node_kind == svn_node_none)

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/commit.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/commit.c Mon Mar 16 10:10:20 2015
@@ -71,6 +71,7 @@ typedef struct commit_context_t {
   const char *checked_in_url;    /* checked-in root to base CHECKOUTs from */
   const char *vcc_url;           /* vcc url */
 
+  int open_batons;               /* Number of open batons */
 } commit_context_t;
 
 #define USING_HTTPV2_COMMIT_SUPPORT(commit_ctx) ((commit_ctx)->txn_url != NULL)
@@ -117,9 +118,6 @@ typedef struct dir_context_t {
      HTTP v2, for PROPPATCH in HTTP v2).  */
   const char *url;
 
-  /* How many pending changes we have left in this directory. */
-  unsigned int ref_count;
-
   /* Is this directory being added?  (Otherwise, just opened.) */
   svn_boolean_t added;
 
@@ -1258,6 +1256,8 @@ open_root(void *edit_baton,
   const char *proppatch_target = NULL;
   apr_pool_t *scratch_pool = svn_pool_create(dir_pool);
 
+  commit_ctx->open_batons++;
+
   if (SVN_RA_SERF__HAVE_HTTPV2_SUPPORT(commit_ctx->session))
     {
       post_response_ctx_t *prc;
@@ -1533,6 +1533,8 @@ add_directory(const char *path,
   dir->name = svn_relpath_basename(dir->relpath, NULL);
   dir->prop_changes = apr_hash_make(dir->pool);
 
+  dir->commit_ctx->open_batons++;
+
   if (USING_HTTPV2_COMMIT_SUPPORT(dir->commit_ctx))
     {
       dir->url = svn_path_url_add_component2(parent->commit_ctx->txn_root_url,
@@ -1623,6 +1625,8 @@ open_directory(const char *path,
   dir->name = svn_relpath_basename(dir->relpath, NULL);
   dir->prop_changes = apr_hash_make(dir->pool);
 
+  dir->commit_ctx->open_batons++;
+
   if (USING_HTTPV2_COMMIT_SUPPORT(dir->commit_ctx))
     {
       dir->url = svn_path_url_add_component2(parent->commit_ctx->txn_root_url,
@@ -1701,6 +1705,8 @@ close_directory(void *dir_baton,
                                  proppatch_ctx, dir->pool));
     }
 
+  dir->commit_ctx->open_batons--;
+
   return SVN_NO_ERROR;
 }
 
@@ -1720,8 +1726,6 @@ add_file(const char *path,
   new_file = apr_pcalloc(file_pool, sizeof(*new_file));
   new_file->pool = file_pool;
 
-  dir->ref_count++;
-
   new_file->parent_dir = dir;
   new_file->commit_ctx = dir->commit_ctx;
   new_file->relpath = apr_pstrdup(new_file->pool, path);
@@ -1732,6 +1736,8 @@ add_file(const char *path,
   new_file->copy_revision = copy_revision;
   new_file->prop_changes = apr_hash_make(new_file->pool);
 
+  dir->commit_ctx->open_batons++;
+
   /* Ensure that the file doesn't exist by doing a HEAD on the
      resource.  If we're using HTTP v2, we'll just look into the
      transaction root tree for this thing.  */
@@ -1842,8 +1848,6 @@ open_file(const char *path,
   new_file = apr_pcalloc(file_pool, sizeof(*new_file));
   new_file->pool = file_pool;
 
-  parent->ref_count++;
-
   new_file->parent_dir = parent;
   new_file->commit_ctx = parent->commit_ctx;
   new_file->relpath = apr_pstrdup(new_file->pool, path);
@@ -1852,6 +1856,8 @@ open_file(const char *path,
   new_file->base_revision = base_revision;
   new_file->prop_changes = apr_hash_make(new_file->pool);
 
+  parent->commit_ctx->open_batons++;
+
   if (USING_HTTPV2_COMMIT_SUPPORT(parent->commit_ctx))
     {
       new_file->url = svn_path_url_add_component2(parent->commit_ctx->txn_root_url,
@@ -2014,6 +2020,8 @@ close_file(void *file_baton,
                                  proppatch, scratch_pool));
     }
 
+  ctx->commit_ctx->open_batons--;
+
   return SVN_NO_ERROR;
 }
 
@@ -2027,6 +2035,11 @@ close_edit(void *edit_baton,
   const svn_commit_info_t *commit_info;
   svn_error_t *err = NULL;
 
+  if (ctx->open_batons > 0)
+    return svn_error_create(
+              SVN_ERR_FS_INCORRECT_EDITOR_COMPLETION, NULL,
+              _("Closing editor with directories or files open"));
+
   /* MERGE our activity */
   SVN_ERR(svn_ra_serf__run_merge(&commit_info,
                                  ctx->session,

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/get_file.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/get_file.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/get_file.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/get_file.c Mon Mar 16 10:10:20 2015
@@ -321,17 +321,19 @@ svn_ra_serf__get_file(svn_ra_session_t *
                       svn_stream_t *stream,
                       svn_revnum_t *fetched_rev,
                       apr_hash_t **props,
-                      apr_pool_t *pool)
+                      apr_pool_t *result_pool)
 {
   svn_ra_serf__session_t *session = ra_session->priv;
   const char *fetch_url;
   const svn_ra_serf__dav_props_t *which_props;
   svn_ra_serf__handler_t *propfind_handler;
+  apr_pool_t *scratch_pool = svn_pool_create(result_pool);
   struct file_prop_baton_t fb;
 
   /* Fetch properties. */
 
-  fetch_url = svn_path_url_add_component2(session->session_url.path, path, pool);
+  fetch_url = svn_path_url_add_component2(session->session_url.path, path,
+                                          scratch_pool);
 
   /* The simple case is if we want HEAD - then a GET on the fetch_url is fine.
    *
@@ -343,7 +345,7 @@ svn_ra_serf__get_file(svn_ra_session_t *
       SVN_ERR(svn_ra_serf__get_stable_url(&fetch_url, fetched_rev,
                                           session,
                                           fetch_url, revision,
-                                          pool, pool));
+                                          scratch_pool, scratch_pool));
       revision = SVN_INVALID_REVNUM;
     }
   /* REVISION is always SVN_INVALID_REVNUM  */
@@ -356,8 +358,8 @@ svn_ra_serf__get_file(svn_ra_session_t *
   else
       which_props = check_path_props;
 
-  fb.result_pool = pool;
-  fb.props = props ? apr_hash_make(pool) : NULL;
+  fb.result_pool = result_pool;
+  fb.props = props ? apr_hash_make(result_pool) : NULL;
   fb.kind = svn_node_unknown;
   fb.sha1_checksum = NULL;
 
@@ -365,9 +367,9 @@ svn_ra_serf__get_file(svn_ra_session_t *
                                                fetch_url, SVN_INVALID_REVNUM,
                                                "0", which_props,
                                                get_file_prop_cb, &fb,
-                                               pool));
+                                               scratch_pool));
 
-  SVN_ERR(svn_ra_serf__context_run_one(propfind_handler, pool));
+  SVN_ERR(svn_ra_serf__context_run_one(propfind_handler, scratch_pool));
 
   /* Verify that resource type is not collection. */
   if (fb.kind != svn_node_file)
@@ -382,7 +384,8 @@ svn_ra_serf__get_file(svn_ra_session_t *
   if (stream)
     {
       svn_boolean_t found;
-      SVN_ERR(try_get_wc_contents(&found, session, fb.sha1_checksum, stream, pool));
+      SVN_ERR(try_get_wc_contents(&found, session, fb.sha1_checksum, stream,
+                                  scratch_pool));
 
       /* No contents found in the WC, let's fetch from server. */
       if (!found)
@@ -391,11 +394,11 @@ svn_ra_serf__get_file(svn_ra_session_t *
           svn_ra_serf__handler_t *handler;
 
           /* Create the fetch context. */
-          stream_ctx = apr_pcalloc(pool, sizeof(*stream_ctx));
+          stream_ctx = apr_pcalloc(scratch_pool, sizeof(*stream_ctx));
           stream_ctx->result_stream = stream;
           stream_ctx->using_compression = session->using_compression;
 
-          handler = svn_ra_serf__create_handler(session, pool);
+          handler = svn_ra_serf__create_handler(session, scratch_pool);
 
           handler->method = "GET";
           handler->path = fetch_url;
@@ -414,12 +417,14 @@ svn_ra_serf__get_file(svn_ra_session_t *
 
           stream_ctx->handler = handler;
 
-          SVN_ERR(svn_ra_serf__context_run_one(handler, pool));
+          SVN_ERR(svn_ra_serf__context_run_one(handler, scratch_pool));
 
           if (handler->sline.code != 200)
             return svn_error_trace(svn_ra_serf__unexpected_status(handler));
         }
     }
 
+  svn_pool_destroy(scratch_pool);
+
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocations.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocations.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocations.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocations.c Mon Mar 16 10:10:20 2015
@@ -193,9 +193,8 @@ svn_ra_serf__get_locations(svn_ra_sessio
 
   SVN_ERR(svn_ra_serf__context_run_one(handler, pool));
 
-  SVN_ERR(svn_ra_serf__error_on_status(handler->sline,
-                                       handler->path,
-                                       handler->location));
+  if (handler->sline.code != 200)
+    SVN_ERR(svn_ra_serf__unexpected_status(handler));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocationsegments.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocationsegments.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocationsegments.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/getlocationsegments.c Mon Mar 16 10:10:20 2015
@@ -196,12 +196,8 @@ svn_ra_serf__get_location_segments(svn_r
 
   err = svn_ra_serf__context_run_one(handler, pool);
 
-  if (!err)
-    {
-      err = svn_ra_serf__error_on_status(handler->sline,
-                                         handler->path,
-                                         handler->location);
-    }
+  if (!err && handler->sline.code != 200)
+    err = svn_ra_serf__unexpected_status(handler);
 
   if (err && (err->apr_err == SVN_ERR_UNSUPPORTED_FEATURE))
     return svn_error_create(SVN_ERR_RA_NOT_IMPLEMENTED, err, NULL);

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/lock.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/lock.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/lock.c Mon Mar 16 10:10:20 2015
@@ -291,6 +291,7 @@ run_locks(svn_ra_serf__session_t *sess,
                                             ctx->handler->sline.reason);
                     break;
 
+                  case 404:
                   case 409:
                   case 500:
                     if (server_err)

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/log.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/log.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/log.c Mon Mar 16 10:10:20 2015
@@ -272,7 +272,7 @@ log_closed(svn_ra_serf__xml_estate_t *xe
       svn_log_entry_t *log_entry;
       const char *rev_str;
 
-      if (log_ctx->limit && (log_ctx->nest_level == 0)
+      if ((log_ctx->limit > 0) && (log_ctx->nest_level == 0)
           && (++log_ctx->count > log_ctx->limit))
         {
           return SVN_NO_ERROR;
@@ -598,8 +598,8 @@ svn_ra_serf__get_log(svn_ra_session_t *r
 
   SVN_ERR(svn_ra_serf__context_run_one(handler, pool));
 
-  return svn_error_trace(
-              svn_ra_serf__error_on_status(handler->sline,
-                                           req_url,
-                                           handler->location));
+  if (handler->sline.code != 200)
+    SVN_ERR(svn_ra_serf__unexpected_status(handler));
+
+  return SVN_NO_ERROR;
 }

Modified: subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/mergeinfo.c?rev=1666947&r1=1666946&r2=1666947&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/mergeinfo.c (original)
+++ subversion/branches/move-tracking-2/subversion/libsvn_ra_serf/mergeinfo.c Mon Mar 16 10:10:20 2015
@@ -228,8 +228,8 @@ svn_ra_serf__get_mergeinfo(svn_ra_sessio
 
   SVN_ERR(svn_ra_serf__context_run_one(handler, pool));
 
-  SVN_ERR(svn_ra_serf__error_on_status(handler->sline, handler->path,
-                                       handler->location));
+  if (handler->sline.code != 200)
+    SVN_ERR(svn_ra_serf__unexpected_status(handler));
 
   if (apr_hash_count(mergeinfo_ctx->result_catalog))
     *catalog = mergeinfo_ctx->result_catalog;