You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2013/09/11 18:54:21 UTC

svn commit: r1521935 [3/6] - in /subversion/branches/1.7.x-issue4153: ./ build/ac-macros/ contrib/hook-scripts/ doc/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ subversion/bindings/javahl/src/or...

Propchange: subversion/branches/1.7.x-issue4153/subversion/libsvn_subr/svn_cache_config.c
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Sep 11 16:54:18 2013
@@ -0,0 +1,127 @@
+/subversion/1.7.x-issue4059/subversion/libsvn_subr/svn_cache_config.c:1239661-1239744
+/subversion/branches/1.5.x-r30215/subversion/libsvn_subr/svn_cache_config.c:870312
+/subversion/branches/1.7.x/subversion/libsvn_subr/svn_cache_config.c:1309894-1521932
+/subversion/branches/1.7.x-JavaHL-pools/subversion/libsvn_subr/svn_cache_config.c:1158684-1158722
+/subversion/branches/1.7.x-gssapi-solaris10/subversion/libsvn_subr/svn_cache_config.c:1453164-1515067
+/subversion/branches/1.7.x-issue3888/subversion/libsvn_subr/svn_cache_config.c:1148937-1149162
+/subversion/branches/1.7.x-issue3975/subversion/libsvn_subr/svn_cache_config.c:1160761-1161546
+/subversion/branches/1.7.x-issue3976/subversion/libsvn_subr/svn_cache_config.c:1161731-1165397
+/subversion/branches/1.7.x-issue4032/subversion/libsvn_subr/svn_cache_config.c:1186668-1186784
+/subversion/branches/1.7.x-issue4035/subversion/libsvn_subr/svn_cache_config.c:1186202-1186315
+/subversion/branches/1.7.x-issue4035-r1185738/subversion/libsvn_subr/svn_cache_config.c:1186316-1186778
+/subversion/branches/1.7.x-issue4059/subversion/libsvn_subr/svn_cache_config.c:1239745-1242661
+/subversion/branches/1.7.x-issue4087/subversion/libsvn_subr/svn_cache_config.c:1243707-1336073
+/subversion/branches/1.7.x-issue4093/subversion/libsvn_subr/svn_cache_config.c:1229839-1230236
+/subversion/branches/1.7.x-issue4102/subversion/libsvn_subr/svn_cache_config.c:1292401-1295402
+/subversion/branches/1.7.x-issue4123/subversion/libsvn_subr/svn_cache_config.c:1293358-1293812
+/subversion/branches/1.7.x-issue4144/subversion/libsvn_subr/svn_cache_config.c:1305854-1306143
+/subversion/branches/1.7.x-issue4161/subversion/libsvn_subr/svn_cache_config.c:1330697-1331209
+/subversion/branches/1.7.x-issue4166/subversion/libsvn_subr/svn_cache_config.c:1330474-1336071
+/subversion/branches/1.7.x-issue4169/subversion/libsvn_subr/svn_cache_config.c:1330537-1336116
+/subversion/branches/1.7.x-issue4257/subversion/libsvn_subr/svn_cache_config.c:1454456-1461404
+/subversion/branches/1.7.x-issue4263/subversion/libsvn_subr/svn_cache_config.c:1423588-1434547
+/subversion/branches/1.7.x-issue4270/subversion/libsvn_subr/svn_cache_config.c:1433737-1485341
+/subversion/branches/1.7.x-issue4306/subversion/libsvn_subr/svn_cache_config.c:1438872-1514941
+/subversion/branches/1.7.x-issue4332/subversion/libsvn_subr/svn_cache_config.c:1453478-1460963
+/subversion/branches/1.7.x-issue4340/subversion/libsvn_subr/svn_cache_config.c:1461589-1485180
+/subversion/branches/1.7.x-issue4408/subversion/libsvn_subr/svn_cache_config.c:1512143-1514943
+/subversion/branches/1.7.x-issue4k/subversion/libsvn_subr/svn_cache_config.c:1166502-1167193
+/subversion/branches/1.7.x-log-diff/subversion/libsvn_subr/svn_cache_config.c:1295670-1295699
+/subversion/branches/1.7.x-neon-default/subversion/libsvn_subr/svn_cache_config.c:1148803-1158680
+/subversion/branches/1.7.x-neon-properr/subversion/libsvn_subr/svn_cache_config.c:1440619-1461944
+/subversion/branches/1.7.x-r1152189/subversion/libsvn_subr/svn_cache_config.c:1152759-1154249
+/subversion/branches/1.7.x-r1155160/subversion/libsvn_subr/svn_cache_config.c:1158704-1159223
+/subversion/branches/1.7.x-r1159093/subversion/libsvn_subr/svn_cache_config.c:1159097-1159230
+/subversion/branches/1.7.x-r1163557/subversion/libsvn_subr/svn_cache_config.c:1163574-1170648
+/subversion/branches/1.7.x-r1173425/subversion/libsvn_subr/svn_cache_config.c:1173429-1176454
+/subversion/branches/1.7.x-r1180154/subversion/libsvn_subr/svn_cache_config.c:1186224-1186351
+/subversion/branches/1.7.x-r1201824/subversion/libsvn_subr/svn_cache_config.c:1202121-1207333
+/subversion/branches/1.7.x-r1210147/subversion/libsvn_subr/svn_cache_config.c:1213310-1293110
+/subversion/branches/1.7.x-r1213331/subversion/libsvn_subr/svn_cache_config.c:1213684-1213756
+/subversion/branches/1.7.x-r1232221/subversion/libsvn_subr/svn_cache_config.c:1232358-1238008
+/subversion/branches/1.7.x-r1236343/subversion/libsvn_subr/svn_cache_config.c:1236628-1239394
+/subversion/branches/1.7.x-r1242759/subversion/libsvn_subr/svn_cache_config.c:1372522-1393041
+/subversion/branches/1.7.x-r1306111/subversion/libsvn_subr/svn_cache_config.c:1306301-1331207
+/subversion/branches/1.7.x-r1341012/subversion/libsvn_subr/svn_cache_config.c:1341013-1355629
+/subversion/branches/1.7.x-r1348822/subversion/libsvn_subr/svn_cache_config.c:1348878-1355700
+/subversion/branches/1.7.x-r1352031/subversion/libsvn_subr/svn_cache_config.c:1431725-1435017
+/subversion/branches/1.7.x-r1352068/subversion/libsvn_subr/svn_cache_config.c:1352087-1364232
+/subversion/branches/1.7.x-r1361007/subversion/libsvn_subr/svn_cache_config.c:1361110-1367853
+/subversion/branches/1.7.x-r1361341/subversion/libsvn_subr/svn_cache_config.c:1361342-1367855
+/subversion/branches/1.7.x-r1365554/subversion/libsvn_subr/svn_cache_config.c:1365558-1367850
+/subversion/branches/1.7.x-r1375052/subversion/libsvn_subr/svn_cache_config.c:1376643-1380970
+/subversion/branches/1.7.x-r1383483/subversion/libsvn_subr/svn_cache_config.c:1383601-1383951
+/subversion/branches/1.7.x-r1388975/subversion/libsvn_subr/svn_cache_config.c:1392898-1393044
+/subversion/branches/1.7.x-r1389851/subversion/libsvn_subr/svn_cache_config.c:1389853-1392834
+/subversion/branches/1.7.x-r1389878/subversion/libsvn_subr/svn_cache_config.c:1389879-1393126
+/subversion/branches/1.7.x-r1389928/subversion/libsvn_subr/svn_cache_config.c:1390384-1391747
+/subversion/branches/1.7.x-r1398325/subversion/libsvn_subr/svn_cache_config.c:1398353-1398633
+/subversion/branches/1.7.x-r1399174/subversion/libsvn_subr/svn_cache_config.c:1399176-1403964
+/subversion/branches/1.7.x-r1401915/subversion/libsvn_subr/svn_cache_config.c:1401934-1407349
+/subversion/branches/1.7.x-r1407131/subversion/libsvn_subr/svn_cache_config.c:1407164-1419607
+/subversion/branches/1.7.x-r1423646/subversion/libsvn_subr/svn_cache_config.c:1423647-1424282
+/subversion/branches/1.7.x-r1426752/subversion/libsvn_subr/svn_cache_config.c:1426753-1485335
+/subversion/branches/1.7.x-r1427278/subversion/libsvn_subr/svn_cache_config.c:1433724-1485338
+/subversion/branches/1.7.x-r1461743/subversion/libsvn_subr/svn_cache_config.c:1461745-1482189
+/subversion/branches/1.7.x-r1475724/subversion/libsvn_subr/svn_cache_config.c:1475743-1482192
+/subversion/branches/1.7.x-r1481010/subversion/libsvn_subr/svn_cache_config.c:1481034-1482194
+/subversion/branches/1.7.x-r1482759/subversion/libsvn_subr/svn_cache_config.c:1483584-1485046
+/subversion/branches/1.7.x-r1507044/subversion/libsvn_subr/svn_cache_config.c:1507300-1511568
+/subversion/branches/1.7.x-serf-server-root-segfaults/subversion/libsvn_subr/svn_cache_config.c:1383952-1392726
+/subversion/branches/1.7.x-svn-patch-eol-fixes/subversion/libsvn_subr/svn_cache_config.c:1207511-1235924
+/subversion/branches/atomic-revprop/subversion/libsvn_subr/svn_cache_config.c:965046-1000689
+/subversion/branches/bdb-reverse-deltas/subversion/libsvn_subr/svn_cache_config.c:872050-872529
+/subversion/branches/diff-callbacks3/subversion/libsvn_subr/svn_cache_config.c:870059-870761
+/subversion/branches/diff-optimizations/subversion/libsvn_subr/svn_cache_config.c:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/libsvn_subr/svn_cache_config.c:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/libsvn_subr/svn_cache_config.c:870728-871118
+/subversion/branches/double-delete/subversion/libsvn_subr/svn_cache_config.c:870511-872970
+/subversion/branches/explore-wc/subversion/libsvn_subr/svn_cache_config.c: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/subversion/libsvn_subr/svn_cache_config.c:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/libsvn_subr/svn_cache_config.c:869036-873803
+/subversion/branches/fsfs-pack/subversion/libsvn_subr/svn_cache_config.c:873717-874575
+/subversion/branches/gnome-keyring/subversion/libsvn_subr/svn_cache_config.c:870558-871410
+/subversion/branches/http-protocol-v2/subversion/libsvn_subr/svn_cache_config.c:874395-876041
+/subversion/branches/in-memory-cache/subversion/libsvn_subr/svn_cache_config.c:869829-871452
+/subversion/branches/integrate-cache-item-serialization/subversion/libsvn_subr/svn_cache_config.c:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/subversion/libsvn_subr/svn_cache_config.c:998649-998852
+/subversion/branches/integrate-compression-level/subversion/libsvn_subr/svn_cache_config.c:1068651-1072287
+/subversion/branches/integrate-io-improvements/subversion/libsvn_subr/svn_cache_config.c:1068684-1072297
+/subversion/branches/integrate-is-cachable/subversion/libsvn_subr/svn_cache_config.c:1072568-1074082
+/subversion/branches/integrate-partial-getter/subversion/libsvn_subr/svn_cache_config.c:1072558-1076552
+/subversion/branches/integrate-readline-speedup/subversion/libsvn_subr/svn_cache_config.c:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/subversion/libsvn_subr/svn_cache_config.c:1068695-1072516
+/subversion/branches/integrate-txdelta-caching/subversion/libsvn_subr/svn_cache_config.c:1072541-1078213
+/subversion/branches/issue-2779-dev/subversion/libsvn_subr/svn_cache_config.c:965496-984198
+/subversion/branches/issue-2843-dev/subversion/libsvn_subr/svn_cache_config.c:871432-874179
+/subversion/branches/issue-3000/subversion/libsvn_subr/svn_cache_config.c:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/libsvn_subr/svn_cache_config.c:873375-874084
+/subversion/branches/issue-3148-dev/subversion/libsvn_subr/svn_cache_config.c:875193-875204
+/subversion/branches/issue-3220-dev/subversion/libsvn_subr/svn_cache_config.c:872210-872226
+/subversion/branches/issue-3242-dev/subversion/libsvn_subr/svn_cache_config.c:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/libsvn_subr/svn_cache_config.c:875156-875867
+/subversion/branches/issue-3975/subversion/libsvn_subr/svn_cache_config.c:1152931-1160746
+/subversion/branches/kwallet/subversion/libsvn_subr/svn_cache_config.c:870785-871314
+/subversion/branches/log-g-performance/subversion/libsvn_subr/svn_cache_config.c:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/libsvn_subr/svn_cache_config.c:874525-874615
+/subversion/branches/nfc-nfd-aware-client/subversion/libsvn_subr/svn_cache_config.c:870276,870376
+/subversion/branches/performance/subversion/libsvn_subr/svn_cache_config.c: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,985695,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-102933
 6,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/py-tests-as-modules/subversion/libsvn_subr/svn_cache_config.c:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/libsvn_subr/svn_cache_config.c:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/libsvn_subr/svn_cache_config.c:873853-874164
+/subversion/branches/revprop-packing/subversion/libsvn_subr/svn_cache_config.c:1143907,1143971,1143997,1144017,1144499,1144568
+/subversion/branches/subtree-mergeinfo/subversion/libsvn_subr/svn_cache_config.c:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/libsvn_subr/svn_cache_config.c:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/libsvn_subr/svn_cache_config.c:918519-934609
+/subversion/branches/svnpatch-diff/subversion/libsvn_subr/svn_cache_config.c:865738-876477
+/subversion/branches/svnraisetc/subversion/libsvn_subr/svn_cache_config.c:874709-875149
+/subversion/branches/svnserve-logging/subversion/libsvn_subr/svn_cache_config.c:869828-870893
+/subversion/branches/tc-issue-3334/subversion/libsvn_subr/svn_cache_config.c:874697-874773
+/subversion/branches/tc-merge-notify/subversion/libsvn_subr/svn_cache_config.c:874017-874062
+/subversion/branches/tc-resolve/subversion/libsvn_subr/svn_cache_config.c:874191-874239
+/subversion/branches/tc_url_rev/subversion/libsvn_subr/svn_cache_config.c:874351-874483
+/subversion/branches/tree-conflicts/subversion/libsvn_subr/svn_cache_config.c:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/libsvn_subr/svn_cache_config.c:873926-874008
+/subversion/branches/uris-as-urls/subversion/libsvn_subr/svn_cache_config.c:1060426-1064427
+/subversion/trunk/subversion/libsvn_subr/cache_config.c:1398325
+/subversion/trunk/subversion/libsvn_subr/svn_cache_config.c:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,1146762,1146781,1146832,1146834,1146870,1146899,1146904,1147293,1147299,1147309,1147882,1148071,1148083,1148094,1148131,1148374,1148424,1148566,1148588,1148652,1148662,1148699,1148853,1148877,1148882,1148936,1149103,1149105,1149135,1149141,1149160,1149228,1149240,1149343,1149371-1149372,1149377,1149398,1149401,1149539,1149572,1149627,1149675,1149701,1149713,1150242,1150254,1150260-1150261,1150266,1150302,1150327,1150344,1150368,1150372,1150441,1150506,1150812,1150853,1151036,1151177,1151610,1151854,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153540,1153566,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154278,1154379,1154382,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1
 155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,1158187,1158193-1158194,1158196,1158201,1158207,1158209-1158210,1158217,1158285,1158288,1158303,1158309,1158407,1158419,1158421,1158436,1158455,1158616-1158617,1158634,1158854,1158875,1158886,1158893,1158896,1158919,1158923-1158924,1158929,1158963,1159093,1159098,1159101,1159132,1159136,1159148,1159230,1159275,1159400,1159686,1159760,1159772,1160605,1160671,1160682,1160704-1160705,1160756,1161063,1161080,1161185,1161210,1161683,1161721,1162024,1162033,1162201,1162516,1162880,1162974,1162995,1163243,1163372,1163383,1163557,1163792,1163953,1164027,1164116,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1164929,1166267,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174342,1174652,1174761,1174797-1174798,1174806,117588
 8,1176915,1176949,1177001,1177492,1177732,1178280,1178282,1178942,1179680,1179767,1179776,1180154,1181090,1181110,1181155,1181215,1181609,1181666,1182115,1182527,1182771,1182904,1182909,1183054,1183263,1183347,1185222,1185242,1185280,1185282,1185730,1185738,1185746,1185763,1185768,1185886,1185911,1185918,1186059,1186092,1186101,1186107,1186109,1186121,1186231,1186240,1186422,1186434,1186732,1186755,1186784,1186815,1186928,1186944,1186981,1186983,1187311,1187676,1187695,1188609,1188652,1188677,1188762,1188774,1189190,1189261,1189395,1189580,1189665,1190463,1195480,1197135,1197998,1199876,1199950,1200277,1200837,1200896,1201002,1201072,1201419,1201824,1202132,1202135,1202187,1202333,1202630,1202807,1203546,1203651,1203653,1203977,1204167,1204478,1204610,1204673,1205188,1205193,1205209,1205726,1205839,1205848,1205968,1206523,1206533,1206576,1206718-1206719,1206724,1206741,1206748,1207555,1207656,1207663,1207808,1207823,1207858,1207949,1208840,1209631,1209654,1210147,1210195,1210913,121
 1048,1211483,1211859,1211885,1212476,1212482,1212484,1213331,1213673,1213681,1213690,1213711,1213716,1214139,1215260,1215288,1215374-1215375,1215379,1220740,1220742,1220750,1220861,1221178,1221303,1221767,1221780,1221793,1222521,1222628,1222644,1222693,1222699,1225491,1226597,1227146,1227237,1227250,1227352,1227372,1227384-1227385,1227900,1228340,1229252,1229303,1229677,1229833,1229980,1230212,1230714,1230798,1231029,1231944-1231945,1232202,1232207,1232221-1232222,1232267,1232413,1233292,1235264,1235296,1235302,1235736,1236163,1236173,1236283,1236343,1237720,1237779,1238121,1239382,1239596,1239631,1239655,1239747,1240314,1240485,1240619,1240752,1241530,1241553,1241599,1241626,1241713,1241726,1242116,1242537,1242607,1242759,1242770,1242794,1243694,1243840,1243920,1243976,1244303,1244317,1244466,1244551,1245284-1245285,1245711,1245738,1245746,1245764,1245809,1245817,1245929,1245935,1291429,1291446,1291520,1291594,1291680,1291685,1291700,1291704,1291726,1291729,1291797,1291810,1291941,
 1292090,1292248,1292255,1292260,1292296,1292322,1292507,1292516,1292768,1292827,1292926,1293229,1293577,1293945,1293972,1293976,1293998,1294134,1294136,1294147,1294236,1294470,1294586,1295007,1295303,1295372,1295418,1296251,1296303,1296369,1296691,1297522,1298343,1300265,1302399,1302417,1302539,1302588,1302591,1302613,1305853,1306111,1306275,1306334,1307177,1309865,1309992,1310378,1310428,1310535,1310594,1311702,1311935,1325361,1327474,1327490,1327495,1327979,1328002,1328038,1328144,1328267-1328268,1328353,1328846-1328847,1328852,1328878,1329388,1329417,1329876,1330258,1330382,1330444,1330520,1335104,1335555,1337441,1338291,1338297,1338314,1338688,1338708,1338713,1338739,1338748,1338810,1339159,1339164,1340556,1341012,1341031,1341034,1341076,1341544,1341560,1342984,1344864-1344865,1344869,1345482,1345740,1346765,1348822,1349215,1349367,1349371,1349380,1349778,1351117,1351772,1352031,1352068,1353572,1354626,1354652,1354876,1354907,1355340,1361007,1361019,1361341,1362508,1365519,13655
 49,1365554,1365556,1365592,1367498,1368065,1368128,1368197-1368198,1371282,1374198,1374800,1374802,1375052,1375089,1376414,1378847,1380175,1380295,1380697,1382843,1383029,1383466,1383483,1383946,1387226,1387943,1388975,1389364,1389499,1389658,1389851,1389878,1389928,1390653,1390965,1391020,1391022,1391641,1391935,1392502,1392599,1393061,1393156,1393165,1393542,1393551,1393598,1394519,1396285,1398100,1399174,1401915,1402417,1402421,1403258,1403583,1403588,1403691,1403964,1403982,1405922,1407131,1407812,1408650,1409146,1409939,1410106,1410203,1419670-1419681,1421011,1421103,1421380,1421541,1422053,1422100,1423585,1423646,1423837,1423840,1423848,1424977,1425368,1426138,1426264,1426752,1426830,1427197,1427210,1427278,1429201,1434128,1434405,1434414,1434418,1434435,1434476,1434750,1435361,1438602,1438683,1441810,1443763,1443929,1445753,1451678,1452617,1452780,1452967,1453780,1454088,1454217,1455352,1458341,1459599,1461278,1461562,1461580,1461701,1461743,1462293,1462300,1462302,1462321,14
 62334,1465975,1476359,1477730,1481010,1481627,1482282,1483781,1485350,1490684,1503528,1507044,1512432,1512471-1512472,1513463,1513472,1514763,1515119,1515237,1515992,1515997,1516023-1516024,1516051-1516052,1516565

Propchange: subversion/branches/1.7.x-issue4153/subversion/libsvn_subr/svn_temp_serializer.c
------------------------------------------------------------------------------
  Merged /subversion/branches/1.7.x-r1423646/subversion/libsvn_subr/svn_temp_serializer.c:r1423647-1424282
  Merged /subversion/trunk/subversion/libsvn_subr/svn_temp_serializer.c:r1423646
  Merged /subversion/branches/1.7.x/subversion/libsvn_subr/svn_temp_serializer.c:r1338667-1521932

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_subr/win32_crypto.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_subr/win32_crypto.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_subr/win32_crypto.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_subr/win32_crypto.c Wed Sep 11 16:54:18 2013
@@ -52,8 +52,9 @@ static const WCHAR description[] = L"aut
 
 /* Implementation of svn_auth__password_set_t that encrypts
    the incoming password using the Windows CryptoAPI. */
-static svn_boolean_t
-windows_password_encrypter(apr_hash_t *creds,
+static svn_error_t *
+windows_password_encrypter(svn_boolean_t *done,
+                           apr_hash_t *creds,
                            const char *realmstring,
                            const char *username,
                            const char *in,
@@ -73,20 +74,21 @@ windows_password_encrypter(apr_hash_t *c
     {
       char *coded = apr_palloc(pool, apr_base64_encode_len(blobout.cbData));
       apr_base64_encode(coded, (const char*)blobout.pbData, blobout.cbData);
-      crypted = svn_auth__simple_password_set(creds, realmstring, username,
-                                              coded, parameters,
-                                              non_interactive, pool);
+      SVN_ERR(svn_auth__simple_password_set(done, creds, realmstring, username,
+                                            coded, parameters,
+                                            non_interactive, pool));
       LocalFree(blobout.pbData);
     }
 
-  return crypted;
+  return SVN_NO_ERROR;
 }
 
 /* Implementation of svn_auth__password_get_t that decrypts
    the incoming password using the Windows CryptoAPI and verifies its
    validity. */
-static svn_boolean_t
-windows_password_decrypter(const char **out,
+static svn_error_t *
+windows_password_decrypter(svn_boolean_t *done,
+                           const char **out,
                            apr_hash_t *creds,
                            const char *realmstring,
                            const char *username,
@@ -100,9 +102,10 @@ windows_password_decrypter(const char **
   svn_boolean_t decrypted;
   char *in;
 
-  if (!svn_auth__simple_password_get(&in, creds, realmstring, username,
-                                     parameters, non_interactive, pool))
-    return FALSE;
+  SVN_ERR(svn_auth__simple_password_get(done, &in, creds, realmstring, username,
+                                        parameters, non_interactive, pool));
+  if (!*done)
+    return SVN_NO_ERROR;
 
   blobin.cbData = strlen(in);
   blobin.pbData = apr_palloc(pool, apr_base64_decode_len(in));
@@ -119,7 +122,8 @@ windows_password_decrypter(const char **
       LocalFree(descr);
     }
 
-  return decrypted;
+  *done = decrypted;
+  return SVN_NO_ERROR;
 }
 
 /* Get cached encrypted credentials from the simple provider's cache. */
@@ -186,8 +190,9 @@ svn_auth_get_windows_simple_provider(svn
 
 /* Implementation of svn_auth__password_set_t that encrypts
    the incoming password using the Windows CryptoAPI. */
-static svn_boolean_t
-windows_ssl_client_cert_pw_encrypter(apr_hash_t *creds,
+static svn_error_t *
+windows_ssl_client_cert_pw_encrypter(svn_boolean_t *done,
+                                     apr_hash_t *creds,
                                      const char *realmstring,
                                      const char *username,
                                      const char *in,
@@ -207,20 +212,21 @@ windows_ssl_client_cert_pw_encrypter(apr
     {
       char *coded = apr_palloc(pool, apr_base64_encode_len(blobout.cbData));
       apr_base64_encode(coded, (const char*)blobout.pbData, blobout.cbData);
-      crypted = svn_auth__ssl_client_cert_pw_set(creds, realmstring, username,
-                                                 coded, parameters,
-                                                 non_interactive, pool);
+      SVN_ERR(svn_auth__ssl_client_cert_pw_set(done, creds, realmstring,
+                                               username, coded, parameters,
+                                               non_interactive, pool));
       LocalFree(blobout.pbData);
     }
 
-  return crypted;
+  return SVN_NO_ERROR;
 }
 
 /* Implementation of svn_auth__password_get_t that decrypts
    the incoming password using the Windows CryptoAPI and verifies its
    validity. */
-static svn_boolean_t
-windows_ssl_client_cert_pw_decrypter(const char **out,
+static svn_error_t *
+windows_ssl_client_cert_pw_decrypter(svn_boolean_t *done,
+                                     const char **out,
                                      apr_hash_t *creds,
                                      const char *realmstring,
                                      const char *username,
@@ -234,9 +240,11 @@ windows_ssl_client_cert_pw_decrypter(con
   svn_boolean_t decrypted;
   char *in;
 
-  if (!svn_auth__ssl_client_cert_pw_get(&in, creds, realmstring, username,
-                                        parameters, non_interactive, pool))
-    return FALSE;
+  SVN_ERR(svn_auth__ssl_client_cert_pw_get(done, &in, creds, realmstring,
+                                           username, parameters,
+                                           non_interactive, pool));
+  if (!*done)
+    return SVN_NO_ERROR;
 
   blobin.cbData = strlen(in);
   blobin.pbData = apr_palloc(pool, apr_base64_decode_len(in));
@@ -253,7 +261,8 @@ windows_ssl_client_cert_pw_decrypter(con
       LocalFree(descr);
     }
 
-  return decrypted;
+  *done = decrypted;
+  return SVN_NO_ERROR;
 }
 
 /* Get cached encrypted credentials from the simple provider's cache. */

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_ops.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_ops.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/adm_ops.c Wed Sep 11 16:54:18 2013
@@ -1405,12 +1405,17 @@ revert_restore_handle_copied_dirs(svn_bo
 /* Make the working tree under LOCAL_ABSPATH to depth DEPTH match the
    versioned tree.  This function is called after svn_wc__db_op_revert
    has done the database revert and created the revert list.  Notifies
-   for all paths equal to or below LOCAL_ABSPATH that are reverted. */
+   for all paths equal to or below LOCAL_ABSPATH that are reverted.
+
+   REVERT_ROOT is true for explicit revert targets and FALSE for targets
+   reached via recursion.
+ */
 static svn_error_t *
 revert_restore(svn_wc__db_t *db,
                const char *local_abspath,
                svn_depth_t depth,
                svn_boolean_t use_commit_times,
+               svn_boolean_t revert_root,
                svn_cancel_func_t cancel_func,
                void *cancel_baton,
                svn_wc_notify_func2_t notify_func,
@@ -1434,10 +1439,31 @@ revert_restore(svn_wc__db_t *db,
 #endif
   svn_boolean_t copied_here;
   svn_wc__db_kind_t reverted_kind;
+  svn_boolean_t is_wcroot;
 
   if (cancel_func)
     SVN_ERR(cancel_func(cancel_baton));
 
+  SVN_ERR(svn_wc__db_is_wcroot(&is_wcroot, db, local_abspath, scratch_pool));
+  if (is_wcroot && !revert_root)
+    {
+      /* Issue #4162: Obstructing working copy. We can't access the working
+         copy data from the parent working copy for this node by just using
+         local_abspath */
+
+      if (notify_func)
+        {
+          svn_wc_notify_t *notify = svn_wc_create_notify(
+                                        local_abspath,
+                                        svn_wc_notify_update_skip_obstruction,
+                                        scratch_pool);
+
+          notify_func(notify_baton, notify, scratch_pool);
+        }
+
+      return SVN_NO_ERROR; /* We don't revert obstructing working copies */
+    }
+
   SVN_ERR(svn_wc__db_revert_list_read(&notify_required,
                                       &conflict_old, &conflict_new,
                                       &conflict_working, &prop_reject,
@@ -1743,7 +1769,7 @@ revert_restore(svn_wc__db_t *db,
                                           iterpool);
 
           SVN_ERR(revert_restore(db, child_abspath, depth,
-                                 use_commit_times,
+                                 use_commit_times, FALSE /* revert root */,
                                  cancel_func, cancel_baton,
                                  notify_func, notify_baton,
                                  iterpool));
@@ -1795,7 +1821,7 @@ new_revert_internal(svn_wc__db_t *db,
 
   if (!err)
     err = revert_restore(db, local_abspath, depth,
-                         use_commit_times,
+                         use_commit_times, TRUE /* revert root */,
                          cancel_func, cancel_baton,
                          notify_func, notify_baton,
                          scratch_pool);

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_editor.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_editor.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_editor.c Wed Sep 11 16:54:18 2013
@@ -1281,11 +1281,10 @@ add_directory(const char *path,
                       dir_pool);
   *child_baton = db;
 
-  /* Add this path to the parent directory's list of elements that
-     have been compared. */
-  apr_hash_set(pb->compared, apr_pstrdup(pb->pool, db->path),
-               APR_HASH_KEY_STRING, "");
-
+  /* Issue #3797: Don't add this filename to the parent directory's list of
+     elements that have been compared, to show local additions via the local
+     diff. The repository node is unrelated from the working copy version
+     (similar to not-present in the working copy) */
 
   return SVN_NO_ERROR;
 }
@@ -1430,10 +1429,10 @@ add_file(const char *path,
   fb = make_file_baton(path, TRUE, pb, file_pool);
   *file_baton = fb;
 
-  /* Add this filename to the parent directory's list of elements that
-     have been compared. */
-  apr_hash_set(pb->compared, apr_pstrdup(pb->pool, path),
-               APR_HASH_KEY_STRING, "");
+  /* Issue #3797: Don't add this filename to the parent directory's list of
+     elements that have been compared, to show local additions via the local
+     diff. The repository node is unrelated from the working copy version
+     (similar to not-present in the working copy) */
 
   return SVN_NO_ERROR;
 }

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_local.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_local.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_local.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/diff_local.c Wed Sep 11 16:54:18 2013
@@ -204,11 +204,10 @@ file_diff(struct diff_baton *eb,
      the latter two have corresponding pristine info to diff against.  */
   if (status == svn_wc__db_status_added)
     SVN_ERR(svn_wc__db_scan_addition(&status, NULL, NULL, NULL, NULL,
-                                     &original_repos_relpath, NULL, NULL,
+                                     NULL, NULL, NULL,
                                      NULL, db, local_abspath,
                                      scratch_pool, scratch_pool));
 
-
   SVN_ERR(get_empty_file(eb, &empty_file, scratch_pool));
 
   /* When we show a delete, we show a diff of the original pristine against

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/update_editor.c Wed Sep 11 16:54:18 2013
@@ -750,6 +750,10 @@ struct file_baton
      initialized, this is never NULL, but it may have zero elements.  */
   apr_array_header_t *propchanges;
 
+  /* For existing files, whether there are local modifications. FALSE for added
+     files */
+  svn_boolean_t local_prop_mods;
+
   /* Bump information for the directory this file lives in */
   struct bump_dir_info *bump_info;
 
@@ -1575,16 +1579,29 @@ check_tree_conflict(svn_wc_conflict_desc
   if (reason == svn_wc_conflict_reason_edited
       || reason == svn_wc_conflict_reason_deleted
       || reason == svn_wc_conflict_reason_replaced)
-    /* When the node existed before (it was locally deleted, replaced or
-     * edited), then 'update' cannot add it "again". So it can only send
-     * _action_edit, _delete or _replace. */
-    SVN_ERR_ASSERT(action == svn_wc_conflict_action_edit
-                   || action == svn_wc_conflict_action_delete
-                   || action == svn_wc_conflict_action_replace);
+    {
+      /* When the node existed before (it was locally deleted, replaced or
+       * edited), then 'update' cannot add it "again". So it can only send
+       * _action_edit, _delete or _replace. */
+    if (action != svn_wc_conflict_action_edit
+        && action != svn_wc_conflict_action_delete
+        && action != svn_wc_conflict_action_replace)
+      return svn_error_createf(SVN_ERR_WC_FOUND_CONFLICT, NULL,
+               _("Unexpected attempt to add a node at path '%s'"),
+               svn_dirent_local_style(local_abspath, scratch_pool));
+    }
   else if (reason == svn_wc_conflict_reason_added)
-    /* When the node did not exist before (it was locally added), then 'update'
-     * cannot want to modify it in any way. It can only send _action_add. */
-    SVN_ERR_ASSERT(action == svn_wc_conflict_action_add);
+    {
+      /* When the node did not exist before (it was locally added),
+       * then 'update' cannot want to modify it in any way.
+       * It can only send _action_add. */
+      if (action != svn_wc_conflict_action_add)
+        return svn_error_createf(SVN_ERR_WC_FOUND_CONFLICT, NULL,
+                 _("Unexpected attempt to edit, delete, or replace "
+                   "a node at path '%s'"),
+                 svn_dirent_local_style(local_abspath, scratch_pool));
+ 
+    }
 
 
   /* A conflict was detected. Append log commands to the log accumulator
@@ -3299,7 +3316,7 @@ open_file(const char *path,
                                &fb->changed_author, NULL,
                                &fb->original_checksum, NULL, NULL, NULL,
                                NULL, NULL, NULL, NULL, NULL, NULL,
-                               &conflicted, NULL, NULL, NULL,
+                               &conflicted, NULL, NULL, &fb->local_prop_mods,
                                NULL, NULL, &have_work,
                                eb->db, fb->local_abspath,
                                fb->pool, scratch_pool));
@@ -3522,6 +3539,85 @@ change_file_prop(void *file_baton,
   if (!fb->edited && svn_property_kind(NULL, name) == svn_prop_regular_kind)
     SVN_ERR(mark_file_edited(fb, scratch_pool));
 
+  if (! fb->shadowed
+      && strcmp(name, SVN_PROP_SPECIAL) == 0)
+    {
+      struct edit_baton *eb = fb->edit_baton;
+      svn_boolean_t modified = FALSE;
+      svn_boolean_t becomes_symlink;
+      svn_boolean_t was_symlink;
+
+      /* Let's see if we have a change as in some scenarios servers report
+         non-changes of properties. */
+      becomes_symlink = (value != NULL);
+
+      if (fb->adding_file)
+        was_symlink = becomes_symlink; /* No change */
+      else
+        {
+          apr_hash_t *props;
+
+          /* We read the server-props, not the ACTUAL props here as we just
+             want to see if this is really an incoming prop change. */
+          SVN_ERR(svn_wc__db_base_get_props(&props, eb->db,
+                                            fb->local_abspath,
+                                            scratch_pool, scratch_pool));
+
+          was_symlink = ((props
+                              && apr_hash_get(props, SVN_PROP_SPECIAL,
+                                              APR_HASH_KEY_STRING) != NULL)
+                              ? svn_tristate_true
+                              : svn_tristate_false);
+        }
+
+      if (was_symlink != becomes_symlink)
+        {
+          /* If the local node was not modified, we continue as usual, if
+             modified we want a tree conflict just like how we would handle
+             it when receiving a delete + add (aka "replace") */
+          if (fb->local_prop_mods)
+            modified = TRUE;
+          else
+            SVN_ERR(svn_wc__internal_file_modified_p(&modified, eb->db,
+                                                     fb->local_abspath,
+                                                     FALSE, scratch_pool));
+        }
+
+      if (modified)
+        {
+          svn_wc_conflict_description2_t *tree_conflict = NULL;
+
+          /* Create a copy of the existing (pre update) BASE node in WORKING,
+             mark a tree conflict and handle the rest of the update as
+             shadowed */
+          SVN_ERR(svn_wc__db_temp_op_make_copy(eb->db, fb->local_abspath,
+                                               scratch_pool));
+          /* ### Performance: We should just create the conflict here, without
+             ### verifying again */
+          SVN_ERR(check_tree_conflict(&tree_conflict, eb, fb->local_abspath,
+                                      svn_wc__db_status_added,
+                                      svn_wc__db_kind_file, TRUE,
+                                      svn_wc_conflict_action_edit,
+                                      svn_node_file, fb->new_relpath,
+                                      scratch_pool, scratch_pool));
+          SVN_ERR_ASSERT(tree_conflict != NULL);
+          SVN_ERR(svn_wc__db_op_set_tree_conflict(eb->db,
+                                                  fb->local_abspath,
+                                                  tree_conflict,
+                                                  scratch_pool));
+          fb->edit_conflict = tree_conflict;
+
+          do_notification(eb, fb->local_abspath, svn_node_file,
+                          svn_wc_notify_tree_conflict, scratch_pool);
+
+          /* Ok, we introduced a replacement, so we can now handle the rest
+             as a normal shadowed update */
+          fb->shadowed = TRUE;
+          fb->add_existed = FALSE;
+          fb->already_notified = TRUE;
+      }
+    }
+
   return SVN_NO_ERROR;
 }
 
@@ -4039,67 +4135,6 @@ close_file(void *file_baton,
   if (current_actual_props == NULL)
     current_actual_props = apr_hash_make(scratch_pool);
 
-  /* Catch symlink-ness change.
-   * add_file() doesn't know whether the incoming added node is a file or
-   * a symlink, because symlink-ness is saved in a prop :(
-   * So add_file() cannot notice when update wants to add a symlink where
-   * locally there already is a file scheduled for addition, or vice versa.
-   * It sees incoming symlinks as simple files and may wrongly try to offer
-   * a text conflict. So flag a tree conflict here. */
-  if (!fb->shadowed
-      && (! fb->adding_file || fb->add_existed))
-    {
-      svn_boolean_t local_is_link;
-      svn_boolean_t incoming_is_link;
-      int i;
-
-      local_is_link = apr_hash_get(local_actual_props,
-                                SVN_PROP_SPECIAL,
-                                APR_HASH_KEY_STRING) != NULL;
-
-      incoming_is_link = local_is_link;
-
-      /* Does an incoming propchange affect symlink-ness? */
-      for (i = 0; i < regular_prop_changes->nelts; ++i)
-        {
-          const svn_prop_t *prop = &APR_ARRAY_IDX(regular_prop_changes, i,
-                                                  svn_prop_t);
-
-          if (strcmp(prop->name, SVN_PROP_SPECIAL) == 0)
-            {
-              incoming_is_link = (prop->value != NULL);
-              break;
-            }
-        }
-
-      if (local_is_link != incoming_is_link)
-        {
-          svn_wc_conflict_description2_t *tree_conflict = NULL;
-
-          fb->shadowed = TRUE;
-          fb->obstruction_found = TRUE;
-          fb->add_existed = FALSE;
-
-          /* ### Performance: We should just create the conflict here, without
-             ### verifying again */
-          SVN_ERR(check_tree_conflict(&tree_conflict, eb, fb->local_abspath,
-                                      svn_wc__db_status_added,
-                                      svn_wc__db_kind_file, TRUE,
-                                      svn_wc_conflict_action_add,
-                                      svn_node_file, fb->new_relpath,
-                                      scratch_pool, scratch_pool));
-          SVN_ERR_ASSERT(tree_conflict != NULL);
-          SVN_ERR(svn_wc__db_op_set_tree_conflict(eb->db,
-                                                  fb->local_abspath,
-                                                  tree_conflict,
-                                                  scratch_pool));
-
-          fb->already_notified = TRUE;
-          do_notification(eb, fb->local_abspath, svn_node_unknown,
-                          svn_wc_notify_tree_conflict, scratch_pool);
-        }
-    }
-
   prop_state = svn_wc_notify_state_unknown;
 
   if (! fb->shadowed)

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/util.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/util.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/util.c Wed Sep 11 16:54:18 2013
@@ -463,7 +463,7 @@ svn_wc__status2_from_3(svn_wc_status2_t 
   /* (Currently a no-op, but just make sure it is ok) */
   if (old_status->repos_node_status == svn_wc_status_modified
       || old_status->repos_node_status == svn_wc_status_conflicted)
-    (*status)->text_status = old_status->repos_text_status;
+    (*status)->repos_text_status = old_status->repos_text_status;
 
   if (old_status->node_status == svn_wc_status_added)
     (*status)->prop_status = svn_wc_status_none; /* No separate info */

Modified: subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_wcroot.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_wcroot.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_wcroot.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/libsvn_wc/wc_db_wcroot.c Wed Sep 11 16:54:18 2013
@@ -602,11 +602,21 @@ try_symlink_as_dir:
          inside the wcroot, but we know the abspath is this directory
          (ie. where we found it).  */
 
-      SVN_ERR(svn_wc__db_pdh_create_wcroot(wcroot,
+      err = svn_wc__db_pdh_create_wcroot(wcroot,
                             apr_pstrdup(db->state_pool, local_abspath),
                             sdb, wc_id, FORMAT_FROM_SDB,
                             db->auto_upgrade, db->enforce_empty_wq,
-                            db->state_pool, scratch_pool));
+                            db->state_pool, scratch_pool);
+      if (err && err->apr_err == SVN_ERR_WC_UNSUPPORTED_FORMAT && is_symlink)
+        {
+          /* We found an unsupported WC after traversing upwards from a
+           * symlink. Fall through to code below to check if the symlink
+           * points at a supported WC. */
+          svn_error_clear(err);
+          *wcroot = NULL;
+        }
+      else
+        SVN_ERR(err);
     }
   else
     {
@@ -618,16 +628,17 @@ try_symlink_as_dir:
                             db->state_pool, scratch_pool));
     }
 
-  {
-    const char *dir_relpath;
+  if (*wcroot)
+    {
+      const char *dir_relpath;
+
+      /* The subdirectory's relpath is easily computed relative to the
+         wcroot that we just found.  */
+      dir_relpath = compute_relpath(*wcroot, local_dir_abspath, NULL);
 
-    /* The subdirectory's relpath is easily computed relative to the
-       wcroot that we just found.  */
-    dir_relpath = compute_relpath(*wcroot, local_dir_abspath, NULL);
-
-    /* And the result local_relpath may include a filename.  */
-    *local_relpath = svn_relpath_join(dir_relpath, build_relpath, result_pool);
-  }
+      /* And the result local_relpath may include a filename.  */
+      *local_relpath = svn_relpath_join(dir_relpath, build_relpath, result_pool);
+    }
 
   if (is_symlink)
     {
@@ -641,33 +652,38 @@ try_symlink_as_dir:
        * points to a directory, try to find a wcroot in that directory
        * instead. */
       
-      err = svn_wc__db_read_info_internal(&status, NULL, NULL, NULL, NULL,
-                                          NULL, NULL, NULL, NULL, NULL, NULL,
-                                          NULL, NULL, NULL, NULL, NULL, NULL,
-                                          NULL, &conflicted, NULL, NULL, NULL,
-                                          NULL, NULL, NULL,
-                                          *wcroot, *local_relpath,
-                                          scratch_pool, scratch_pool);
-      if (err)
+      if (*wcroot)
         {
-          if (err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND
-              && !SVN_WC__ERR_IS_NOT_CURRENT_WC(err))
-            return svn_error_trace(err);
+          err = svn_wc__db_read_info_internal(&status, NULL, NULL, NULL, NULL,
+                                              NULL, NULL, NULL, NULL, NULL,
+                                              NULL, NULL, NULL, NULL, NULL,
+                                              NULL, NULL, NULL, &conflicted,
+                                              NULL, NULL, NULL, NULL, NULL,
+                                              NULL, *wcroot, *local_relpath,
+                                              scratch_pool, scratch_pool);
+          if (err)
+            {
+              if (err->apr_err != SVN_ERR_WC_PATH_NOT_FOUND
+                  && !SVN_WC__ERR_IS_NOT_CURRENT_WC(err))
+                return svn_error_trace(err);
 
-          svn_error_clear(err);
-          retry_if_dir = TRUE; /* The symlink is unversioned. */
+              svn_error_clear(err);
+              retry_if_dir = TRUE; /* The symlink is unversioned. */
+            }
+          else
+            {
+              /* The symlink is versioned, or obstructs a versioned node.
+               * Ignore non-conflicted not-present/excluded nodes.
+               * This allows the symlink to redirect the wcroot query to a
+               * directory, regardless of 'invisible' nodes in this WC. */
+              retry_if_dir = ((status == svn_wc__db_status_not_present ||
+                               status == svn_wc__db_status_excluded ||
+                               status == svn_wc__db_status_server_excluded)
+                              && !conflicted);
+            }
         }
       else
-        {
-          /* The symlink is versioned, or obstructs a versioned node.
-           * Ignore non-conflicted not-present/excluded nodes.
-           * This allows the symlink to redirect the wcroot query to a
-           * directory, regardless of 'invisible' nodes in this WC. */
-          retry_if_dir = ((status == svn_wc__db_status_not_present ||
-                           status == svn_wc__db_status_excluded ||
-                           status == svn_wc__db_status_server_excluded)
-                          && !conflicted);
-        }
+        retry_if_dir = TRUE;
 
       if (retry_if_dir)
         {

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/deadprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/deadprops.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/deadprops.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/deadprops.c Wed Sep 11 16:54:18 2013
@@ -168,6 +168,7 @@ save_value(dav_db *db, const dav_prop_na
   const char *propname;
   svn_error_t *serr;
   const dav_resource *resource = db->resource;
+  apr_pool_t *subpool;
 
   /* get the repos-local name */
   get_repos_propname(db, name, &propname);
@@ -202,13 +203,16 @@ save_value(dav_db *db, const dav_prop_na
 
   */
 
+  /* A subpool to cope with mod_dav making multiple calls, e.g. during
+     PROPPATCH with multiple values. */
+  subpool = svn_pool_create(db->resource->pool);
   if (db->resource->baselined)
     {
       if (db->resource->working)
         {
           serr = svn_repos_fs_change_txn_prop(resource->info->root.txn,
                                               propname, value,
-                                              resource->pool);
+                                              subpool);
         }
       else
         {
@@ -219,7 +223,7 @@ save_value(dav_db *db, const dav_prop_na
                                                TRUE, TRUE,
                                                db->authz_read_func,
                                                db->authz_read_baton,
-                                               resource->pool);
+                                               subpool);
 
           /* Prepare any hook failure message to get sent over the wire */
           if (serr)
@@ -242,20 +246,21 @@ save_value(dav_db *db, const dav_prop_na
           dav_svn__operational_log(resource->info,
                                    svn_log__change_rev_prop(
                                       resource->info->root.rev,
-                                      propname, resource->pool));
+                                      propname, subpool));
         }
     }
   else if (resource->info->restype == DAV_SVN_RESTYPE_TXN_COLLECTION)
     {
       serr = svn_repos_fs_change_txn_prop(resource->info->root.txn,
-                                          propname, value, resource->pool);
+                                          propname, value, subpool);
     }
   else
     {
       serr = svn_repos_fs_change_node_prop(resource->info->root.root,
                                            get_repos_path(resource->info),
-                                           propname, value, resource->pool);
+                                           propname, value, subpool);
     }
+  svn_pool_destroy(subpool);
 
   if (serr != NULL)
     return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
@@ -540,6 +545,7 @@ db_remove(dav_db *db, const dav_prop_nam
 {
   svn_error_t *serr;
   const char *propname;
+  apr_pool_t *subpool;
 
   /* get the repos-local name */
   get_repos_propname(db, name, &propname);
@@ -548,11 +554,15 @@ db_remove(dav_db *db, const dav_prop_nam
   if (propname == NULL)
     return NULL;
 
+  /* A subpool to cope with mod_dav making multiple calls, e.g. during
+     PROPPATCH with multiple values. */
+  subpool = svn_pool_create(db->resource->pool);
+
   /* Working Baseline or Working (Version) Resource */
   if (db->resource->baselined)
     if (db->resource->working)
       serr = svn_repos_fs_change_txn_prop(db->resource->info->root.txn,
-                                          propname, NULL, db->resource->pool);
+                                          propname, NULL, subpool);
     else
       /* ### VIOLATING deltaV: you can't proppatch a baseline, it's
          not a working resource!  But this is how we currently
@@ -564,11 +574,12 @@ db_remove(dav_db *db, const dav_prop_nam
                                            propname, NULL, NULL, TRUE, TRUE,
                                            db->authz_read_func,
                                            db->authz_read_baton,
-                                           db->resource->pool);
+                                           subpool);
   else
     serr = svn_repos_fs_change_node_prop(db->resource->info->root.root,
                                          get_repos_path(db->resource->info),
-                                         propname, NULL, db->resource->pool);
+                                         propname, NULL, subpool);
+  svn_pool_destroy(subpool);
   if (serr != NULL)
     return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
                                 "could not remove a property",

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/liveprops.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/liveprops.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/liveprops.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/liveprops.c Wed Sep 11 16:54:18 2013
@@ -429,7 +429,8 @@ insert_prop_internal(const dav_resource 
         svn_filesize_t len = 0;
 
         /* our property, but not defined on collection resources */
-        if (resource->collection || resource->baselined)
+        if (resource->type == DAV_RESOURCE_TYPE_ACTIVITY
+            || resource->collection || resource->baselined)
           return DAV_PROP_INSERT_NOTSUPP;
 
         serr = svn_fs_file_length(&len, resource->info->root.root,
@@ -453,7 +454,9 @@ insert_prop_internal(const dav_resource 
         svn_string_t *pval;
         const char *mime_type = NULL;
 
-        if (resource->baselined && resource->type == DAV_RESOURCE_TYPE_VERSION)
+        if (resource->type == DAV_RESOURCE_TYPE_ACTIVITY
+            || (resource->baselined
+                && resource->type == DAV_RESOURCE_TYPE_VERSION))
           return DAV_PROP_INSERT_NOTSUPP;
 
         if (resource->type == DAV_RESOURCE_TYPE_PRIVATE

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/lock.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/lock.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/lock.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/lock.c Wed Sep 11 16:54:18 2013
@@ -640,6 +640,19 @@ append_locks(dav_lockdb *lockdb,
   svn_lock_t *slock;
   svn_error_t *serr;
   dav_error *derr;
+  dav_svn_repos *repos = resource->info->repos;
+      
+  /* We don't allow anonymous locks */
+  if (! repos->username)
+    return dav_svn__new_error(resource->pool, HTTP_UNAUTHORIZED,
+                              DAV_ERR_LOCK_SAVE_LOCK,
+                              "Anonymous lock creation is not allowed.");
+
+  /* Not a path in the repository so can't lock it. */
+  if (! resource->info->repos_path)
+    return dav_svn__new_error(resource->pool, HTTP_BAD_REQUEST,
+                              DAV_ERR_LOCK_SAVE_LOCK,
+                              "Attempted to lock path not in repository.");
 
   /* If the resource's fs path is unreadable, we don't allow a lock to
      be created on it. */
@@ -663,7 +676,6 @@ append_locks(dav_lockdb *lockdb,
       svn_fs_txn_t *txn;
       svn_fs_root_t *txn_root;
       const char *conflict_msg;
-      dav_svn_repos *repos = resource->info->repos;
       apr_hash_t *revprop_table = apr_hash_make(resource->pool);
       apr_hash_set(revprop_table, SVN_PROP_REVISION_AUTHOR,
                    APR_HASH_KEY_STRING, svn_string_create(repos->username,
@@ -741,14 +753,14 @@ append_locks(dav_lockdb *lockdb,
 
   /* Convert the dav_lock into an svn_lock_t. */
   derr = dav_lock_to_svn_lock(&slock, lock, resource->info->repos_path,
-                              info, resource->info->repos->is_svn_client,
+                              info, repos->is_svn_client,
                               resource->pool);
   if (derr)
     return derr;
 
   /* Now use the svn_lock_t to actually perform the lock. */
   serr = svn_repos_fs_lock(&slock,
-                           resource->info->repos->repos,
+                           repos->repos,
                            slock->path,
                            slock->token,
                            slock->comment,

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mirror.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mirror.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mirror.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mirror.c Wed Sep 11 16:54:18 2013
@@ -39,12 +39,17 @@
    URI_SEGMENT is the URI bits relative to the repository root (but if
    non-empty, *does* have a leading slash delimiter).
    MASTER_URI and URI_SEGMENT are not URI-encoded. */
-static void proxy_request_fixup(request_rec *r,
-                                const char *master_uri,
-                                const char *uri_segment)
+static int proxy_request_fixup(request_rec *r,
+                               const char *master_uri,
+                               const char *uri_segment)
 {
-    assert((uri_segment[0] == '\0')
-           || (uri_segment[0] == '/'));
+    if (uri_segment[0] != '\0' && uri_segment[0] != '/')
+      {
+        ap_log_rerror(APLOG_MARK, APLOG_ERR, SVN_ERR_BAD_CONFIG_VALUE, r,
+                     "Invalid URI segment '%s' in slave fixup",
+                      uri_segment);
+        return HTTP_INTERNAL_SERVER_ERROR;
+      }
 
     r->proxyreq = PROXYREQ_REVERSE;
     r->uri = r->unparsed_uri;
@@ -57,6 +62,7 @@ static void proxy_request_fixup(request_
     ap_add_output_filter("LocationRewrite", NULL, r, r->connection);
     ap_add_output_filter("ReposRewrite", NULL, r, r->connection);
     ap_add_input_filter("IncomingRewrite", NULL, r, r->connection);
+    return OK;
 }
 
 
@@ -91,8 +97,10 @@ int dav_svn__proxy_request_fixup(request
                                                     "/txn/", (char *)NULL))
                     || ap_strstr_c(seg, apr_pstrcat(r->pool, special_uri,
                                                     "/txr/", (char *)NULL))) {
+                    int rv;
                     seg += strlen(root_dir);
-                    proxy_request_fixup(r, master_uri, seg);
+                    rv = proxy_request_fixup(r, master_uri, seg);
+                    if (rv) return rv;
                 }
             }
             return OK;
@@ -106,8 +114,10 @@ int dav_svn__proxy_request_fixup(request
                     r->method_number == M_LOCK ||
                     r->method_number == M_UNLOCK ||
                     ap_strstr_c(seg, special_uri))) {
+            int rv;
             seg += strlen(root_dir);
-            proxy_request_fixup(r, master_uri, seg);
+            rv = proxy_request_fixup(r, master_uri, seg);
+            if (rv) return rv;
             return OK;
         }
     }

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mod_dav_svn.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mod_dav_svn.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mod_dav_svn.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/mod_dav_svn.c Wed Sep 11 16:54:18 2013
@@ -573,7 +573,7 @@ dav_svn_get_repos_path(request_rec *r,
 
   /* Construct the full path from the parent path base directory
      and the repository name. */
-  *repos_path = svn_urlpath__join(fs_parent_path, repos_name, r->pool);
+  *repos_path = svn_dirent_join(fs_parent_path, repos_name, r->pool);
   return NULL;
 }
 
@@ -924,7 +924,41 @@ static int dav_svn__handler(request_rec 
   return DECLINED;
 }
 
+#define NO_MAP_TO_STORAGE_NOTE "dav_svn-no-map-to-storage"
 
+/* Prevent filename on the request from being set since we aren't serving a
+ * file off the disk.  This means that <Directory> blocks will not match and
+ * that * %f in logging formats will show as "-". */
+static int dav_svn__translate_name(request_rec *r)
+{
+  dir_conf_t *conf = ap_get_module_config(r->per_dir_config, &dav_svn_module);
+
+  /* module is not configured, bail out early */
+  if (!conf->fs_path && !conf->fs_parent_path)
+    return DECLINED;
+
+  /* Be paranoid and set it to NULL just in case some other module set it
+   * before we got called. */ 
+  r->filename = NULL;
+
+  /* Leave a note to ourselves so that we know not to decline in the 
+   * map_to_storage hook. */
+  apr_table_setn(r->notes, NO_MAP_TO_STORAGE_NOTE, (const char*)1); 
+  return OK;
+}
+
+/* Prevent core_map_to_storage from running if we prevented the r->filename
+ * from being set since core_map_to_storage doesn't like r->filename being
+ * NULL. */
+static int dav_svn__map_to_storage(request_rec *r)
+{
+  /* Check a note we left in translate_name since map_to_storage doesn't
+   * have access to our configuration. */
+  if (apr_table_get(r->notes, NO_MAP_TO_STORAGE_NOTE))
+    return OK;
+
+  return DECLINED;
+}
 
 
 
@@ -1071,6 +1105,12 @@ register_hooks(apr_pool_t *pconf)
   ap_register_input_filter("IncomingRewrite", dav_svn__location_in_filter,
                            NULL, AP_FTYPE_CONTENT_SET);
   ap_hook_fixups(dav_svn__proxy_request_fixup, NULL, NULL, APR_HOOK_MIDDLE);
+  /* translate_name hook is LAST so that it doesn't interfere with modules
+   * like mod_alias that are MIDDLE. */
+  ap_hook_translate_name(dav_svn__translate_name, NULL, NULL, APR_HOOK_LAST);
+  /* map_to_storage hook is LAST to avoid interferring with mod_http's
+   * handling of OPTIONS and TRACE. */
+  ap_hook_map_to_storage(dav_svn__map_to_storage, NULL, NULL, APR_HOOK_LAST);
 }
 
 

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/log.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/log.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/log.c Wed Sep 11 16:54:18 2013
@@ -341,10 +341,9 @@ dav_svn__log_report(const dav_resource *
                                   dav_xml_get_cdata(child, resource->pool, 1));
           if (serr)
             {
-              derr = dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
+              return dav_svn__convert_err(serr, HTTP_BAD_REQUEST,
                                           "Malformed CDATA in element "
                                           "\"limit\"", resource->pool);
-              goto cleanup;
             }
         }
       else if (strcmp(child->name, "discover-changed-paths") == 0)

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/reports/update.c Wed Sep 11 16:54:18 2013
@@ -845,6 +845,49 @@ malformed_element_error(const char *tagn
 }
 
 
+/* Validate that REVISION is a valid revision number for repository in
+   which YOUNGEST is the latest revision.  Use RESOURCE as a
+   convenient way to access the request record and a pool for error
+   messaging.   (It's okay if REVISION is SVN_INVALID_REVNUM, as in
+   the related contexts that just means "the youngest revision".)
+
+   REVTYPE is just a string describing the type/purpose of REVISION,
+   used in the generated error string.  */
+static dav_error *
+validate_input_revision(svn_revnum_t revision,
+                        svn_revnum_t youngest,
+                        const char *revtype,
+                        const dav_resource *resource)
+{
+  if (! SVN_IS_VALID_REVNUM(revision))
+    return SVN_NO_ERROR;
+    
+  if (revision > youngest)
+    {
+      svn_error_t *serr;
+
+      if (dav_svn__get_master_uri(resource->info->r))
+        {
+          serr = svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, 0,
+                                   "No such %s '%ld' found in the repository.  "
+                                   "Perhaps the repository is out of date with "
+                                   "respect to the master repository?",
+                                   revtype, revision);
+        }
+      else
+        {
+          serr = svn_error_createf(SVN_ERR_FS_NO_SUCH_REVISION, 0,
+                                   "No such %s '%ld' found in the repository.",
+                                   revtype, revision);
+        }
+      return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
+                                  "Invalid revision found in update report "
+                                  "request.", resource->pool);
+    }
+  return SVN_NO_ERROR;
+}
+
+
 dav_error *
 dav_svn__update_report(const dav_resource *resource,
                        const apr_xml_doc *doc,
@@ -854,8 +897,7 @@ dav_svn__update_report(const dav_resourc
   apr_xml_elem *child;
   void *rbaton = NULL;
   update_ctx_t uc = { 0 };
-  svn_revnum_t revnum = SVN_INVALID_REVNUM;
-  svn_boolean_t revnum_is_head = FALSE;
+  svn_revnum_t youngest, revnum = SVN_INVALID_REVNUM;
   svn_revnum_t from_revnum = SVN_INVALID_REVNUM;
   int ns;
   /* entry_counter and entry_is_empty are for operational logging. */
@@ -920,6 +962,14 @@ dav_svn__update_report(const dav_resourc
         }
     }
 
+  /* Ask the repository about its youngest revision (which we'll need
+     for some input validation later). */
+  if ((serr = svn_fs_youngest_rev(&youngest, repos->fs, resource->pool)))
+    return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
+                                "Could not determine the youngest "
+                                "revision for the update process.",
+                                resource->pool);
+
   for (child = doc->root->first_child; child != NULL; child = child->next)
     {
       /* Note that child->name might not match any of the cases below.
@@ -1039,6 +1089,23 @@ dav_svn__update_report(const dav_resourc
         }
     }
 
+  /* If a target revision wasn't requested, or the requested target
+     revision was invalid, just update to HEAD as of the moment we
+     queried the youngest revision.  Otherwise, at least make sure the
+     request makes sense in light of that youngest revision
+     number.  */
+  if (! SVN_IS_VALID_REVNUM(revnum))
+    {
+      revnum = youngest;
+    }
+  else
+    {
+      derr = validate_input_revision(revnum, youngest, "target revision",
+                                     resource);
+      if (derr)
+        return derr;
+    }
+
   if (!saw_depth && !saw_recursive && (requested_depth == svn_depth_unknown))
     requested_depth = svn_depth_infinity;
 
@@ -1054,18 +1121,6 @@ dav_svn__update_report(const dav_resourc
          SVN_DAV_ERROR_TAG);
     }
 
-  /* If a revision for this operation was not dictated to us, this
-     means "update to whatever the current HEAD is now". */
-  if (revnum == SVN_INVALID_REVNUM)
-    {
-      if ((serr = svn_fs_youngest_rev(&revnum, repos->fs, resource->pool)))
-        return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
-                                    "Could not determine the youngest "
-                                    "revision for the update process.",
-                                    resource->pool);
-      revnum_is_head = TRUE;
-    }
-
   uc.svndiff_version = resource->info->svndiff_version;
   uc.resource = resource;
   uc.output = output;
@@ -1179,27 +1234,10 @@ dav_svn__update_report(const dav_resourc
                   {
                     rev = SVN_STR_TO_REV(this_attr->value);
                     saw_rev = TRUE;
-                    if (revnum_is_head && rev > revnum)
-                      {
-                        if (dav_svn__get_master_uri(resource->info->r))
-                          return dav_svn__new_error_tag(
-                                     resource->pool,
-                                     HTTP_INTERNAL_SERVER_ERROR, 0,
-                                     "A reported revision is higher than the "
-                                     "current repository HEAD revision.  "
-                                     "Perhaps the repository is out of date "
-                                     "with respect to the master repository?",
-                                     SVN_DAV_ERROR_NAMESPACE,
-                                     SVN_DAV_ERROR_TAG);
-                        else
-                          return dav_svn__new_error_tag(
-                                     resource->pool,
-                                     HTTP_INTERNAL_SERVER_ERROR, 0,
-                                     "A reported revision is higher than the "
-                                     "current repository HEAD revision.",
-                                     SVN_DAV_ERROR_NAMESPACE,
-                                     SVN_DAV_ERROR_TAG);
-                      }
+                    if ((derr = validate_input_revision(rev, youngest,
+                                                        "reported revision",
+                                                        resource)))
+                      return derr;
                   }
                 else if (strcmp(this_attr->name, "depth") == 0)
                   depth = svn_depth_from_word(this_attr->value);

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/repos.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/repos.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/repos.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/repos.c Wed Sep 11 16:54:18 2013
@@ -2390,21 +2390,12 @@ get_parent_path(const char *path,
                 svn_boolean_t is_urlpath,
                 apr_pool_t *pool)
 {
-  apr_size_t len;
-  char *tmp = apr_pstrdup(pool, path);
-
-  len = strlen(tmp);
-
-  if (len > 0)
+  if (*path != '\0') /* not an empty string */
     {
-      /* Remove any trailing slash; else svn_path_dirname() asserts. */
-      if (tmp[len-1] == '/')
-        tmp[len-1] = '\0';
-
       if (is_urlpath)
-        return svn_urlpath__dirname(tmp, pool);
+        return svn_urlpath__dirname(path, pool);
       else
-        return svn_fspath__dirname(tmp, pool);
+        return svn_fspath__dirname(path, pool);
     }
 
   return path;
@@ -2440,7 +2431,9 @@ get_parent_resource(const dav_resource *
       parent->versioned = 1;
       parent->hooks = resource->hooks;
       parent->pool = resource->pool;
-      parent->uri = get_parent_path(resource->uri, TRUE, resource->pool);
+      parent->uri = get_parent_path(svn_urlpath__canonicalize(resource->uri,
+                                                              resource->pool),
+                                    TRUE, resource->pool);
       parent->info = parentinfo;
 
       parentinfo->uri_path =
@@ -3075,6 +3068,13 @@ set_headers(request_rec *r, const dav_re
       if ((serr == NULL) && (info.rev != SVN_INVALID_REVNUM))
         {
           mimetype = SVN_SVNDIFF_MIME_TYPE;
+
+          /* Note the base that this svndiff is based on, and tell any
+             intermediate caching proxies that this header is
+             significant.  */
+          apr_table_setn(r->headers_out, "Vary", SVN_DAV_DELTA_BASE_HEADER);
+          apr_table_setn(r->headers_out, SVN_DAV_DELTA_BASE_HEADER,
+                         resource->info->delta_base);
         }
       svn_error_clear(serr);
     }

Modified: subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/mod_dav_svn/version.c Wed Sep 11 16:54:18 2013
@@ -953,8 +953,11 @@ dav_svn__checkin(dav_resource *resource,
 
           if (serr)
             {
+              int status;
+
               if (serr->apr_err == SVN_ERR_FS_CONFLICT)
                 {
+                  status = HTTP_CONFLICT;
                   msg = apr_psprintf(resource->pool,
                                      "A conflict occurred during the CHECKIN "
                                      "processing. The problem occurred with  "
@@ -962,10 +965,12 @@ dav_svn__checkin(dav_resource *resource,
                                      conflict_msg);
                 }
               else
-                msg = "An error occurred while committing the transaction.";
+                {
+                  status = HTTP_INTERNAL_SERVER_ERROR;
+                  msg = "An error occurred while committing the transaction.";
+                }
 
-              return dav_svn__convert_err(serr, HTTP_CONFLICT, msg,
-                                          resource->pool);
+              return dav_svn__convert_err(serr, status, msg, resource->pool);
             }
           else
             {
@@ -1455,8 +1460,11 @@ merge(dav_resource *target,
       if (serr)
         {
           const char *msg;
+          int status;
+
           if (serr->apr_err == SVN_ERR_FS_CONFLICT)
             {
+              status = HTTP_CONFLICT;
               /* ### we need to convert the conflict path into a URI */
               msg = apr_psprintf(pool,
                                  "A conflict occurred during the MERGE "
@@ -1465,9 +1473,12 @@ merge(dav_resource *target,
                                  conflict);
             }
           else
-            msg = "An error occurred while committing the transaction.";
+            {
+              status = HTTP_INTERNAL_SERVER_ERROR;
+              msg = "An error occurred while committing the transaction.";
+            }
 
-          return dav_svn__convert_err(serr, HTTP_CONFLICT, msg, pool);
+          return dav_svn__convert_err(serr, status, msg, pool);
         }
       else
         {

Modified: subversion/branches/1.7.x-issue4153/subversion/po/es.po
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/po/es.po?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/po/es.po [UTF-8] (original)
+++ subversion/branches/1.7.x-issue4153/subversion/po/es.po [UTF-8] Wed Sep 11 16:54:18 2013
@@ -13565,7 +13565,7 @@ msgstr ""
 #~ "                               'HEAD'        lo último del repositorio\n"
 #~ "                               'BASE'        rev base del ítem de la c. de trab.\n"
 #~ "                               'COMMITTED'   último commit en o antes de BASE\n"
-#~ "                               'PREV'        revisión justo antes de COMMITED"
+#~ "                               'PREV'        revisión justo antes de COMMITTED"
 
 #~ msgid "Can't open file '%s' for reading"
 #~ msgstr "No se pudo abrir el archivo '%s' para leer"

Modified: subversion/branches/1.7.x-issue4153/subversion/po/pt_BR.po
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/po/pt_BR.po?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/po/pt_BR.po [UTF-8] (original)
+++ subversion/branches/1.7.x-issue4153/subversion/po/pt_BR.po [UTF-8] Wed Sep 11 16:54:18 2013
@@ -12663,8 +12663,8 @@ msgstr ""
 #~ "                                '{' DATA '}' revisão no início da data\n"
 #~ "                                'HEAD'       último no repositório\n"
 #~ "                                'BASE'       revisão base do item da cópia de trabalho\n"
-#~ "                                'COMMITED'   último commit em ou antes de BASE\n"
-#~ "                                'PREV'       revisão exatamente antes de COMMITED"
+#~ "                                'COMMITTED'  último commit em ou antes de BASE\n"
+#~ "                                'PREV'       revisão exatamente antes de COMMITTED"
 
 #~ msgid "Can't get user name"
 #~ msgstr "Não foi possível obter o nome do usuário"