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 [5/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...

Modified: subversion/branches/1.7.x-issue4153/subversion/po/zh_TW.po
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/po/zh_TW.po?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/po/zh_TW.po [UTF-8] (original)
+++ subversion/branches/1.7.x-issue4153/subversion/po/zh_TW.po [UTF-8] Wed Sep 11 16:54:18 2013
@@ -12810,7 +12810,7 @@ msgstr ""
 #~ "                                '{' DATE '}' 該日開始的修訂版\n"
 #~ "                                'HEAD'       檔案庫最新版本\n"
 #~ "                                'BASE'       該項目工作複本的基礎修訂版\n"
-#~ "                                'COMMITED'   位於或早於 BASE 的最後送交\n"
+#~ "                                'COMMITTED'  位於或早於 BASE 的最後送交\n"
 #~ "                                'PREV'       COMMITTED 之前的修訂版"
 
 #~ msgid "Error reading administrative log file in '%s'"

Modified: subversion/branches/1.7.x-issue4153/subversion/svn/log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svn/log-cmd.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svn/log-cmd.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svn/log-cmd.c Wed Sep 11 16:54:18 2013
@@ -464,7 +464,13 @@ log_entry_receiver_xml(void *baton,
               /* <path action="X"> */
               svn_xml_make_open_tag(&sb, pool, svn_xml_protect_pcdata, "path",
                                     "action", action,
-                                    "kind", svn_cl__node_kind_str_xml(log_item->node_kind), NULL);
+                                    "kind", svn_cl__node_kind_str_xml(
+                                                     log_item->node_kind),
+                                    "text-mods", svn_tristate__to_word(
+                                                     log_item->text_modified),
+                                    "prop-mods", svn_tristate__to_word(
+                                                     log_item->props_modified),
+                                    NULL);
             }
           /* xxx</path> */
           svn_xml_escape_cdata_cstring(&sb, path, pool);

Modified: subversion/branches/1.7.x-issue4153/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svn/main.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svn/main.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svn/main.c Wed Sep 11 16:54:18 2013
@@ -1995,7 +1995,8 @@ main(int argc, const char *argv[])
         opt_state.remove = TRUE;
         break;
       case opt_changelist:
-        opt_state.changelist = apr_pstrdup(pool, opt_arg);
+        SVN_INT_ERR(svn_utf_cstring_to_utf8(&utf8_opt_arg, opt_arg, pool));
+        opt_state.changelist = utf8_opt_arg;
         if (opt_state.changelist[0] == '\0')
           {
             err = svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,

Propchange: subversion/branches/1.7.x-issue4153/subversion/svn/main.c
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Sep 11 16:54:18 2013
@@ -0,0 +1,127 @@
+/subversion/1.7.x-issue4059/subversion/svn/main.c:1239661-1239744
+/subversion/branches/1.5.x-r30215/subversion/svn/main.c:870312
+/subversion/branches/1.7.x/subversion/svn/main.c:1309894-1521932
+/subversion/branches/1.7.x-JavaHL-pools/subversion/svn/main.c:1158684-1158722
+/subversion/branches/1.7.x-gssapi-solaris10/subversion/svn/main.c:1453164-1515067
+/subversion/branches/1.7.x-issue3888/subversion/svn/main.c:1148937-1149162
+/subversion/branches/1.7.x-issue3975/subversion/svn/main.c:1160761-1161546
+/subversion/branches/1.7.x-issue3976/subversion/svn/main.c:1161731-1165397
+/subversion/branches/1.7.x-issue4032/subversion/svn/main.c:1186668-1186784
+/subversion/branches/1.7.x-issue4035/subversion/svn/main.c:1186202-1186315
+/subversion/branches/1.7.x-issue4035-r1185738/subversion/svn/main.c:1186316-1186778
+/subversion/branches/1.7.x-issue4059/subversion/svn/main.c:1239745-1242661
+/subversion/branches/1.7.x-issue4087/subversion/svn/main.c:1243707-1336073
+/subversion/branches/1.7.x-issue4093/subversion/svn/main.c:1229839-1230236
+/subversion/branches/1.7.x-issue4102/subversion/svn/main.c:1292401-1295402
+/subversion/branches/1.7.x-issue4123/subversion/svn/main.c:1293358-1293812
+/subversion/branches/1.7.x-issue4144/subversion/svn/main.c:1305854-1306143
+/subversion/branches/1.7.x-issue4161/subversion/svn/main.c:1330697-1331209
+/subversion/branches/1.7.x-issue4166/subversion/svn/main.c:1330474-1336071
+/subversion/branches/1.7.x-issue4169/subversion/svn/main.c:1330537-1336116
+/subversion/branches/1.7.x-issue4257/subversion/svn/main.c:1454456-1461404
+/subversion/branches/1.7.x-issue4263/subversion/svn/main.c:1423588-1434547
+/subversion/branches/1.7.x-issue4270/subversion/svn/main.c:1433737-1485341
+/subversion/branches/1.7.x-issue4306/subversion/svn/main.c:1438872-1514941
+/subversion/branches/1.7.x-issue4332/subversion/svn/main.c:1453478-1460963
+/subversion/branches/1.7.x-issue4340/subversion/svn/main.c:1461589-1485180
+/subversion/branches/1.7.x-issue4408/subversion/svn/main.c:1512143-1514943
+/subversion/branches/1.7.x-issue4k/subversion/svn/main.c:1166502-1167193
+/subversion/branches/1.7.x-log-diff/subversion/svn/main.c:1295670-1295699
+/subversion/branches/1.7.x-neon-default/subversion/svn/main.c:1148803-1158680
+/subversion/branches/1.7.x-neon-properr/subversion/svn/main.c:1440619-1461944
+/subversion/branches/1.7.x-r1152189/subversion/svn/main.c:1152759-1154249
+/subversion/branches/1.7.x-r1155160/subversion/svn/main.c:1158704-1159223
+/subversion/branches/1.7.x-r1159093/subversion/svn/main.c:1159097-1159230
+/subversion/branches/1.7.x-r1163557/subversion/svn/main.c:1163574-1170648
+/subversion/branches/1.7.x-r1173425/subversion/svn/main.c:1173429-1176454
+/subversion/branches/1.7.x-r1180154/subversion/svn/main.c:1186224-1186351
+/subversion/branches/1.7.x-r1201824/subversion/svn/main.c:1202121-1207333
+/subversion/branches/1.7.x-r1210147/subversion/svn/main.c:1213310-1293110
+/subversion/branches/1.7.x-r1213331/subversion/svn/main.c:1213684-1213756
+/subversion/branches/1.7.x-r1232221/subversion/svn/main.c:1232358-1238008
+/subversion/branches/1.7.x-r1236343/subversion/svn/main.c:1236628-1239394
+/subversion/branches/1.7.x-r1242759/subversion/svn/main.c:1372522-1393041
+/subversion/branches/1.7.x-r1306111/subversion/svn/main.c:1306301-1331207
+/subversion/branches/1.7.x-r1341012/subversion/svn/main.c:1341013-1355629
+/subversion/branches/1.7.x-r1348822/subversion/svn/main.c:1348878-1355700
+/subversion/branches/1.7.x-r1352031/subversion/svn/main.c:1431725-1435017
+/subversion/branches/1.7.x-r1352068/subversion/svn/main.c:1352087-1364232
+/subversion/branches/1.7.x-r1361007/subversion/svn/main.c:1361110-1367853
+/subversion/branches/1.7.x-r1361341/subversion/svn/main.c:1361342-1367855
+/subversion/branches/1.7.x-r1365554/subversion/svn/main.c:1365558-1367850
+/subversion/branches/1.7.x-r1375052/subversion/svn/main.c:1376643-1380970
+/subversion/branches/1.7.x-r1383483/subversion/svn/main.c:1383601-1383951
+/subversion/branches/1.7.x-r1388975/subversion/svn/main.c:1392898-1393044
+/subversion/branches/1.7.x-r1389851/subversion/svn/main.c:1389853-1392834
+/subversion/branches/1.7.x-r1389878/subversion/svn/main.c:1389879-1393126
+/subversion/branches/1.7.x-r1389928/subversion/svn/main.c:1390384-1391747
+/subversion/branches/1.7.x-r1398325/subversion/svn/main.c:1398353-1398633
+/subversion/branches/1.7.x-r1399174/subversion/svn/main.c:1399176-1403964
+/subversion/branches/1.7.x-r1401915/subversion/svn/main.c:1401934-1407349
+/subversion/branches/1.7.x-r1407131/subversion/svn/main.c:1407164-1419607
+/subversion/branches/1.7.x-r1423646/subversion/svn/main.c:1423647-1424282
+/subversion/branches/1.7.x-r1426752/subversion/svn/main.c:1426753-1485335
+/subversion/branches/1.7.x-r1427278/subversion/svn/main.c:1433724-1485338
+/subversion/branches/1.7.x-r1461743/subversion/svn/main.c:1461745-1482189
+/subversion/branches/1.7.x-r1475724/subversion/svn/main.c:1475743-1482192
+/subversion/branches/1.7.x-r1481010/subversion/svn/main.c:1481034-1482194
+/subversion/branches/1.7.x-r1482759/subversion/svn/main.c:1483584-1485046
+/subversion/branches/1.7.x-r1507044/subversion/svn/main.c:1507300-1511568
+/subversion/branches/1.7.x-serf-server-root-segfaults/subversion/svn/main.c:1383952-1392726
+/subversion/branches/1.7.x-svn-patch-eol-fixes/subversion/svn/main.c:1207511-1235924
+/subversion/branches/atomic-revprop/subversion/svn/main.c:965046-1000689
+/subversion/branches/bdb-reverse-deltas/subversion/svn/main.c:872050-872529
+/subversion/branches/diff-callbacks3/subversion/svn/main.c:870059-870761
+/subversion/branches/diff-optimizations/subversion/svn/main.c:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/svn/main.c:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/svn/main.c:870728-871118
+/subversion/branches/double-delete/subversion/svn/main.c:870511-872970
+/subversion/branches/explore-wc/subversion/svn/main.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/svn/main.c:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/svn/main.c:869036-873803
+/subversion/branches/fsfs-pack/subversion/svn/main.c:873717-874575
+/subversion/branches/gnome-keyring/subversion/svn/main.c:870558-871410
+/subversion/branches/http-protocol-v2/subversion/svn/main.c:874395-876041
+/subversion/branches/in-memory-cache/subversion/svn/main.c:869829-871452
+/subversion/branches/integrate-cache-item-serialization/subversion/svn/main.c:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/subversion/svn/main.c:998649-998852
+/subversion/branches/integrate-compression-level/subversion/svn/main.c:1068651-1072287
+/subversion/branches/integrate-io-improvements/subversion/svn/main.c:1068684-1072297
+/subversion/branches/integrate-is-cachable/subversion/svn/main.c:1072568-1074082
+/subversion/branches/integrate-partial-getter/subversion/svn/main.c:1072558-1076552
+/subversion/branches/integrate-readline-speedup/subversion/svn/main.c:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/subversion/svn/main.c:1068695-1072516
+/subversion/branches/integrate-txdelta-caching/subversion/svn/main.c:1072541-1078213
+/subversion/branches/issue-2779-dev/subversion/svn/main.c:965496-984198
+/subversion/branches/issue-2843-dev/subversion/svn/main.c:871432-874179
+/subversion/branches/issue-3000/subversion/svn/main.c:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/svn/main.c:873375-874084
+/subversion/branches/issue-3148-dev/subversion/svn/main.c:875193-875204
+/subversion/branches/issue-3220-dev/subversion/svn/main.c:872210-872226
+/subversion/branches/issue-3242-dev/subversion/svn/main.c:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/svn/main.c:875156-875867
+/subversion/branches/issue-3975/subversion/svn/main.c:1152931-1160746
+/subversion/branches/kwallet/subversion/svn/main.c:870785-871314
+/subversion/branches/log-g-performance/subversion/svn/main.c:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/svn/main.c:874525-874615
+/subversion/branches/nfc-nfd-aware-client/subversion/svn/main.c:870276,870376
+/subversion/branches/performance/subversion/svn/main.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-1029336,1029339-1029340,10
 29342,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/svn/main.c:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/svn/main.c:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/svn/main.c:873853-874164
+/subversion/branches/revprop-packing/subversion/svn/main.c:1143907,1143971,1143997,1144017,1144499,1144568
+/subversion/branches/subtree-mergeinfo/subversion/svn/main.c:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/svn/main.c:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/svn/main.c:918519-934609
+/subversion/branches/svnpatch-diff/subversion/svn/main.c:865738-876477
+/subversion/branches/svnraisetc/subversion/svn/main.c:874709-875149
+/subversion/branches/svnserve-logging/subversion/svn/main.c:869828-870893
+/subversion/branches/tc-issue-3334/subversion/svn/main.c:874697-874773
+/subversion/branches/tc-merge-notify/subversion/svn/main.c:874017-874062
+/subversion/branches/tc-resolve/subversion/svn/main.c:874191-874239
+/subversion/branches/tc_url_rev/subversion/svn/main.c:874351-874483
+/subversion/branches/tree-conflicts/subversion/svn/main.c:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/svn/main.c:873926-874008
+/subversion/branches/uris-as-urls/subversion/svn/main.c:1060426-1064427
+/subversion/trunk/subversion/svn/main.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,1155160,1155313,11553
 34,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,1175888,1176915,1176949,11
 77001,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,1211048,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,1292
 255,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,1365549,1365554,1365556,1
 365592,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,1462334,1465975,147635
 9,1477730,1481010,1481627,1482282,1483781,1485350,1490684,1503528,1507044,1512432,1512471-1512472,1513463,1513472,1514763,1515119,1515237,1515992,1515997,1516023-1516024,1516051-1516052,1516565
+/subversion/trunk/subversion/svn/svn.c:1475724

Modified: subversion/branches/1.7.x-issue4153/subversion/svnrdump/load_editor.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svnrdump/load_editor.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svnrdump/load_editor.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svnrdump/load_editor.c Wed Sep 11 16:54:18 2013
@@ -729,6 +729,8 @@ set_revision_property(void *baton,
 {
   struct revision_baton *rb = baton;
 
+  SVN_ERR(svn_rdump__normalize_prop(name, &value, rb->pool));
+  
   SVN_ERR(svn_repos__validate_prop(name, value, rb->pool));
 
   if (rb->rev > 0)
@@ -808,6 +810,8 @@ set_node_property(void *baton,
         }
     }
 
+  SVN_ERR(svn_rdump__normalize_prop(name, &value, pool));
+
   SVN_ERR(svn_repos__validate_prop(name, value, pool));
 
   switch (nb->kind)

Modified: subversion/branches/1.7.x-issue4153/subversion/svnrdump/svnrdump.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svnrdump/svnrdump.h?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svnrdump/svnrdump.h (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svnrdump/svnrdump.h Wed Sep 11 16:54:18 2013
@@ -85,6 +85,20 @@ svn_rdump__normalize_props(apr_hash_t **
                            apr_hash_t *props,
                            apr_pool_t *result_pool);
 
+/* Normalize the line ending style of a single property that "needs
+ * translation" (according to svn_prop_needs_translation(),
+ * currently all svn:* props) so that they contain only LF (\n) line endings.
+ * "\r" characters found mid-line are replaced with "\n".
+ * "\r\n" sequences are replaced with "\n"
+ *
+ * NAME is used to check that VALUE should be normalized, and if this is the
+ * case, VALUE is then normalized, allocated from RESULT_POOL
+ */
+svn_error_t *
+svn_rdump__normalize_prop(const char *name,
+                          const svn_string_t **value,
+                          apr_pool_t *result_pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/1.7.x-issue4153/subversion/svnrdump/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svnrdump/util.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svnrdump/util.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svnrdump/util.c Wed Sep 11 16:54:18 2013
@@ -31,6 +31,25 @@
 
 
 svn_error_t *
+svn_rdump__normalize_prop(const char *name,
+                          const svn_string_t **value,
+                          apr_pool_t *result_pool)
+{
+  if (svn_prop_needs_translation(name))
+    {
+      const char *cstring;
+
+      SVN_ERR(svn_subst_translate_cstring2((*value)->data, &cstring,
+                                           "\n", TRUE,
+                                           NULL, FALSE,
+                                           result_pool));
+
+      *value = svn_string_create(cstring, result_pool);
+    }
+  return SVN_NO_ERROR;
+}
+
+svn_error_t *
 svn_rdump__normalize_props(apr_hash_t **normal_props,
                            apr_hash_t *props,
                            apr_pool_t *result_pool)
@@ -45,16 +64,8 @@ svn_rdump__normalize_props(apr_hash_t **
       const char *key = svn__apr_hash_index_key(hi);
       const svn_string_t *value = svn__apr_hash_index_val(hi);
 
-      if (svn_prop_needs_translation(key))
-        {
-          const char *cstring;
-
-          SVN_ERR(svn_subst_translate_cstring2(value->data, &cstring,
-                                               "\n", TRUE,
-                                               NULL, FALSE,
-                                               result_pool));
-          value = svn_string_create(cstring, result_pool);
-        }
+      SVN_ERR(svn_rdump__normalize_prop(key, &value,
+                                        result_pool));
 
       apr_hash_set(*normal_props, key, APR_HASH_KEY_STRING, value);
     }

Modified: subversion/branches/1.7.x-issue4153/subversion/svnserve/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svnserve/main.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svnserve/main.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svnserve/main.c Wed Sep 11 16:54:18 2013
@@ -51,6 +51,7 @@
 
 #include "svn_private_config.h"
 #include "private/svn_dep_compat.h"
+#include "private/svn_atomic.h"
 #include "winservice.h"
 
 #ifdef HAVE_UNISTD_H
@@ -342,11 +343,44 @@ static apr_status_t redirect_stdout(void
   return apr_file_dup2(out_file, err_file, pool);
 }
 
+#if APR_HAS_THREADS
+/* The pool passed to apr_thread_create can only be released when both
+
+      A: the call to apr_thread_create has returned to the calling thread
+      B: the new thread has started running and reached apr_thread_start_t
+
+   So we set the atomic counter to 2 then both the calling thread and
+   the new thread decrease it and when it reaches 0 the pool can be
+   released.  */
+struct shared_pool_t {
+  svn_atomic_t count;
+  apr_pool_t *pool;
+};
+
+static struct shared_pool_t *
+attach_shared_pool(apr_pool_t *pool)
+{
+  struct shared_pool_t *shared = apr_palloc(pool, sizeof(struct shared_pool_t));
+
+  shared->pool = pool;
+  svn_atomic_set(&shared->count, 2);
+
+  return shared;
+}
+
+static void
+release_shared_pool(struct shared_pool_t *shared)
+{
+  if (svn_atomic_dec(&shared->count) == 0)
+    svn_pool_destroy(shared->pool);
+}
+#endif
+
 /* "Arguments" passed from the main thread to the connection thread */
 struct serve_thread_t {
   svn_ra_svn_conn_t *conn;
   serve_params_t *params;
-  apr_pool_t *pool;
+  struct shared_pool_t *shared_pool;
 };
 
 #if APR_HAS_THREADS
@@ -354,8 +388,8 @@ static void * APR_THREAD_FUNC serve_thre
 {
   struct serve_thread_t *d = data;
 
-  svn_error_clear(serve(d->conn, d->params, d->pool));
-  svn_pool_destroy(d->pool);
+  svn_error_clear(serve(d->conn, d->params, d->shared_pool->pool));
+  release_shared_pool(d->shared_pool);
 
   return NULL;
 }
@@ -369,8 +403,9 @@ static svn_error_t *write_pid_file(const
   const char *contents = apr_psprintf(pool, "%" APR_PID_T_FMT "\n",
                                              getpid());
 
+  SVN_ERR(svn_io_remove_file2(filename, TRUE, pool));
   SVN_ERR(svn_io_file_open(&file, filename,
-                           APR_WRITE | APR_CREATE | APR_TRUNCATE,
+                           APR_WRITE | APR_CREATE | APR_EXCL,
                            APR_OS_DEFAULT, pool));
   SVN_ERR(svn_io_file_write_full(file, contents, strlen(contents), NULL,
                                  pool));
@@ -420,6 +455,7 @@ int main(int argc, const char *argv[])
 #if APR_HAS_THREADS
   apr_threadattr_t *tattr;
   apr_thread_t *tid;
+  struct shared_pool_t *shared_pool;
 
   struct serve_thread_t *thread_data;
 #endif
@@ -881,7 +917,7 @@ int main(int argc, const char *argv[])
     settings.single_threaded = TRUE;
     if (handling_mode == connection_mode_thread)
       {
-#ifdef APR_HAS_THREADS
+#if APR_HAS_THREADS
         settings.single_threaded = FALSE;
 #else
         /* No requests will be processed at all
@@ -928,7 +964,9 @@ int main(int argc, const char *argv[])
                                          connection_pool) == APR_CHILD_DONE)
             ;
         }
-      if (APR_STATUS_IS_EINTR(status))
+      if (APR_STATUS_IS_EINTR(status)
+          || APR_STATUS_IS_ECONNABORTED(status)
+          || APR_STATUS_IS_ECONNRESET(status))
         {
           svn_pool_destroy(connection_pool);
           continue;
@@ -1011,6 +1049,7 @@ int main(int argc, const char *argv[])
              particularly sophisticated strategy for a threaded server, it's
              little different from forking one process per connection. */
 #if APR_HAS_THREADS
+          shared_pool = attach_shared_pool(connection_pool);
           status = apr_threadattr_create(&tattr, connection_pool);
           if (status)
             {
@@ -1030,9 +1069,9 @@ int main(int argc, const char *argv[])
           thread_data = apr_palloc(connection_pool, sizeof(*thread_data));
           thread_data->conn = conn;
           thread_data->params = &params;
-          thread_data->pool = connection_pool;
+          thread_data->shared_pool = shared_pool;
           status = apr_thread_create(&tid, tattr, serve_thread, thread_data,
-                                     connection_pool);
+                                     shared_pool->pool);
           if (status)
             {
               err = svn_error_wrap_apr(status, _("Can't create thread"));
@@ -1040,6 +1079,7 @@ int main(int argc, const char *argv[])
               svn_error_clear(err);
               exit(1);
             }
+          release_shared_pool(shared_pool);
 #endif
           break;
 

Propchange: subversion/branches/1.7.x-issue4153/subversion/svnserve/main.c
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Sep 11 16:54:18 2013
@@ -0,0 +1,127 @@
+/subversion/1.7.x-issue4059/subversion/svnserve/main.c:1239661-1239744
+/subversion/branches/1.5.x-r30215/subversion/svnserve/main.c:870312
+/subversion/branches/1.7.x/subversion/svnserve/main.c:1309894-1521932
+/subversion/branches/1.7.x-JavaHL-pools/subversion/svnserve/main.c:1158684-1158722
+/subversion/branches/1.7.x-gssapi-solaris10/subversion/svnserve/main.c:1453164-1515067
+/subversion/branches/1.7.x-issue3888/subversion/svnserve/main.c:1148937-1149162
+/subversion/branches/1.7.x-issue3975/subversion/svnserve/main.c:1160761-1161546
+/subversion/branches/1.7.x-issue3976/subversion/svnserve/main.c:1161731-1165397
+/subversion/branches/1.7.x-issue4032/subversion/svnserve/main.c:1186668-1186784
+/subversion/branches/1.7.x-issue4035/subversion/svnserve/main.c:1186202-1186315
+/subversion/branches/1.7.x-issue4035-r1185738/subversion/svnserve/main.c:1186316-1186778
+/subversion/branches/1.7.x-issue4059/subversion/svnserve/main.c:1239745-1242661
+/subversion/branches/1.7.x-issue4087/subversion/svnserve/main.c:1243707-1336073
+/subversion/branches/1.7.x-issue4093/subversion/svnserve/main.c:1229839-1230236
+/subversion/branches/1.7.x-issue4102/subversion/svnserve/main.c:1292401-1295402
+/subversion/branches/1.7.x-issue4123/subversion/svnserve/main.c:1293358-1293812
+/subversion/branches/1.7.x-issue4144/subversion/svnserve/main.c:1305854-1306143
+/subversion/branches/1.7.x-issue4161/subversion/svnserve/main.c:1330697-1331209
+/subversion/branches/1.7.x-issue4166/subversion/svnserve/main.c:1330474-1336071
+/subversion/branches/1.7.x-issue4169/subversion/svnserve/main.c:1330537-1336116
+/subversion/branches/1.7.x-issue4257/subversion/svnserve/main.c:1454456-1461404
+/subversion/branches/1.7.x-issue4263/subversion/svnserve/main.c:1423588-1434547
+/subversion/branches/1.7.x-issue4270/subversion/svnserve/main.c:1433737-1485341
+/subversion/branches/1.7.x-issue4306/subversion/svnserve/main.c:1438872-1514941
+/subversion/branches/1.7.x-issue4332/subversion/svnserve/main.c:1453478-1460963
+/subversion/branches/1.7.x-issue4340/subversion/svnserve/main.c:1461589-1485180
+/subversion/branches/1.7.x-issue4408/subversion/svnserve/main.c:1512143-1514943
+/subversion/branches/1.7.x-issue4k/subversion/svnserve/main.c:1166502-1167193
+/subversion/branches/1.7.x-log-diff/subversion/svnserve/main.c:1295670-1295699
+/subversion/branches/1.7.x-neon-default/subversion/svnserve/main.c:1148803-1158680
+/subversion/branches/1.7.x-neon-properr/subversion/svnserve/main.c:1440619-1461944
+/subversion/branches/1.7.x-r1152189/subversion/svnserve/main.c:1152759-1154249
+/subversion/branches/1.7.x-r1155160/subversion/svnserve/main.c:1158704-1159223
+/subversion/branches/1.7.x-r1159093/subversion/svnserve/main.c:1159097-1159230
+/subversion/branches/1.7.x-r1163557/subversion/svnserve/main.c:1163574-1170648
+/subversion/branches/1.7.x-r1173425/subversion/svnserve/main.c:1173429-1176454
+/subversion/branches/1.7.x-r1180154/subversion/svnserve/main.c:1186224-1186351
+/subversion/branches/1.7.x-r1201824/subversion/svnserve/main.c:1202121-1207333
+/subversion/branches/1.7.x-r1210147/subversion/svnserve/main.c:1213310-1293110
+/subversion/branches/1.7.x-r1213331/subversion/svnserve/main.c:1213684-1213756
+/subversion/branches/1.7.x-r1232221/subversion/svnserve/main.c:1232358-1238008
+/subversion/branches/1.7.x-r1236343/subversion/svnserve/main.c:1236628-1239394
+/subversion/branches/1.7.x-r1242759/subversion/svnserve/main.c:1372522-1393041
+/subversion/branches/1.7.x-r1306111/subversion/svnserve/main.c:1306301-1331207
+/subversion/branches/1.7.x-r1341012/subversion/svnserve/main.c:1341013-1355629
+/subversion/branches/1.7.x-r1348822/subversion/svnserve/main.c:1348878-1355700
+/subversion/branches/1.7.x-r1352031/subversion/svnserve/main.c:1431725-1435017
+/subversion/branches/1.7.x-r1352068/subversion/svnserve/main.c:1352087-1364232
+/subversion/branches/1.7.x-r1361007/subversion/svnserve/main.c:1361110-1367853
+/subversion/branches/1.7.x-r1361341/subversion/svnserve/main.c:1361342-1367855
+/subversion/branches/1.7.x-r1365554/subversion/svnserve/main.c:1365558-1367850
+/subversion/branches/1.7.x-r1375052/subversion/svnserve/main.c:1376643-1380970
+/subversion/branches/1.7.x-r1383483/subversion/svnserve/main.c:1383601-1383951
+/subversion/branches/1.7.x-r1388975/subversion/svnserve/main.c:1392898-1393044
+/subversion/branches/1.7.x-r1389851/subversion/svnserve/main.c:1389853-1392834
+/subversion/branches/1.7.x-r1389878/subversion/svnserve/main.c:1389879-1393126
+/subversion/branches/1.7.x-r1389928/subversion/svnserve/main.c:1390384-1391747
+/subversion/branches/1.7.x-r1398325/subversion/svnserve/main.c:1398353-1398633
+/subversion/branches/1.7.x-r1399174/subversion/svnserve/main.c:1399176-1403964
+/subversion/branches/1.7.x-r1401915/subversion/svnserve/main.c:1401934-1407349
+/subversion/branches/1.7.x-r1407131/subversion/svnserve/main.c:1407164-1419607
+/subversion/branches/1.7.x-r1423646/subversion/svnserve/main.c:1423647-1424282
+/subversion/branches/1.7.x-r1426752/subversion/svnserve/main.c:1426753-1485335
+/subversion/branches/1.7.x-r1427278/subversion/svnserve/main.c:1433724-1485338
+/subversion/branches/1.7.x-r1461743/subversion/svnserve/main.c:1461745-1482189
+/subversion/branches/1.7.x-r1475724/subversion/svnserve/main.c:1475743-1482192
+/subversion/branches/1.7.x-r1481010/subversion/svnserve/main.c:1481034-1482194
+/subversion/branches/1.7.x-r1482759/subversion/svnserve/main.c:1483584-1485046
+/subversion/branches/1.7.x-r1507044/subversion/svnserve/main.c:1507300-1511568
+/subversion/branches/1.7.x-serf-server-root-segfaults/subversion/svnserve/main.c:1383952-1392726
+/subversion/branches/1.7.x-svn-patch-eol-fixes/subversion/svnserve/main.c:1207511-1235924
+/subversion/branches/atomic-revprop/subversion/svnserve/main.c:965046-1000689
+/subversion/branches/bdb-reverse-deltas/subversion/svnserve/main.c:872050-872529
+/subversion/branches/diff-callbacks3/subversion/svnserve/main.c:870059-870761
+/subversion/branches/diff-optimizations/subversion/svnserve/main.c:1031270-1037352
+/subversion/branches/diff-optimizations-bytes/subversion/svnserve/main.c:1037353-1067789
+/subversion/branches/dont-save-plaintext-passwords-by-default/subversion/svnserve/main.c:870728-871118
+/subversion/branches/double-delete/subversion/svnserve/main.c:870511-872970
+/subversion/branches/explore-wc/subversion/svnserve/main.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/svnserve/main.c:871779-873302
+/subversion/branches/fs-rep-sharing/subversion/svnserve/main.c:869036-873803
+/subversion/branches/fsfs-pack/subversion/svnserve/main.c:873717-874575
+/subversion/branches/gnome-keyring/subversion/svnserve/main.c:870558-871410
+/subversion/branches/http-protocol-v2/subversion/svnserve/main.c:874395-876041
+/subversion/branches/in-memory-cache/subversion/svnserve/main.c:869829-871452
+/subversion/branches/integrate-cache-item-serialization/subversion/svnserve/main.c:1068724-1068739
+/subversion/branches/integrate-cache-membuffer/subversion/svnserve/main.c:998649-998852
+/subversion/branches/integrate-compression-level/subversion/svnserve/main.c:1068651-1072287
+/subversion/branches/integrate-io-improvements/subversion/svnserve/main.c:1068684-1072297
+/subversion/branches/integrate-is-cachable/subversion/svnserve/main.c:1072568-1074082
+/subversion/branches/integrate-partial-getter/subversion/svnserve/main.c:1072558-1076552
+/subversion/branches/integrate-readline-speedup/subversion/svnserve/main.c:1072553-1072555
+/subversion/branches/integrate-stream-api-extensions/subversion/svnserve/main.c:1068695-1072516
+/subversion/branches/integrate-txdelta-caching/subversion/svnserve/main.c:1072541-1078213
+/subversion/branches/issue-2779-dev/subversion/svnserve/main.c:965496-984198
+/subversion/branches/issue-2843-dev/subversion/svnserve/main.c:871432-874179
+/subversion/branches/issue-3000/subversion/svnserve/main.c:871713,871716-871719,871721-871726,871728,871734
+/subversion/branches/issue-3067-deleted-subtrees/subversion/svnserve/main.c:873375-874084
+/subversion/branches/issue-3148-dev/subversion/svnserve/main.c:875193-875204
+/subversion/branches/issue-3220-dev/subversion/svnserve/main.c:872210-872226
+/subversion/branches/issue-3242-dev/subversion/svnserve/main.c:879653-896436
+/subversion/branches/issue-3334-dirs/subversion/svnserve/main.c:875156-875867
+/subversion/branches/issue-3975/subversion/svnserve/main.c:1152931-1160746
+/subversion/branches/kwallet/subversion/svnserve/main.c:870785-871314
+/subversion/branches/log-g-performance/subversion/svnserve/main.c:870941-871032
+/subversion/branches/merge-skips-obstructions/subversion/svnserve/main.c:874525-874615
+/subversion/branches/nfc-nfd-aware-client/subversion/svnserve/main.c:870276,870376
+/subversion/branches/performance/subversion/svnserve/main.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-1029336,1029339-10293
 40,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/svnserve/main.c:956579-1033052
+/subversion/branches/ra_serf-digest-authn/subversion/svnserve/main.c:875693-876404
+/subversion/branches/reintegrate-improvements/subversion/svnserve/main.c:873853-874164
+/subversion/branches/revprop-packing/subversion/svnserve/main.c:1143907,1143971,1143997,1144017,1144499,1144568
+/subversion/branches/subtree-mergeinfo/subversion/svnserve/main.c:876734-878766
+/subversion/branches/svn-mergeinfo-enhancements/subversion/svnserve/main.c:870119-870195,870197-870288
+/subversion/branches/svn-patch-improvements/subversion/svnserve/main.c:918519-934609
+/subversion/branches/svnpatch-diff/subversion/svnserve/main.c:865738-876477
+/subversion/branches/svnraisetc/subversion/svnserve/main.c:874709-875149
+/subversion/branches/svnserve-logging/subversion/svnserve/main.c:869828-870893
+/subversion/branches/tc-issue-3334/subversion/svnserve/main.c:874697-874773
+/subversion/branches/tc-merge-notify/subversion/svnserve/main.c:874017-874062
+/subversion/branches/tc-resolve/subversion/svnserve/main.c:874191-874239
+/subversion/branches/tc_url_rev/subversion/svnserve/main.c:874351-874483
+/subversion/branches/tree-conflicts/subversion/svnserve/main.c:868291-873154
+/subversion/branches/tree-conflicts-notify/subversion/svnserve/main.c:873926-874008
+/subversion/branches/uris-as-urls/subversion/svnserve/main.c:1060426-1064427
+/subversion/trunk/subversion/svnserve/main.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,1155160,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,1175888,1176915,11769
 49,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,1211048,1211483,12
 11859,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,1365549,1365554,1365
 556,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,1398325,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,1462334,1
 465975,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
+/subversion/trunk/subversion/svnserve/svnserve.c:1481010,1482759,1482779,1516556

Modified: subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c (original)
+++ subversion/branches/1.7.x-issue4153/subversion/svnserve/serve.c Wed Sep 11 16:54:18 2013
@@ -2766,8 +2766,7 @@ static svn_error_t *replay_one_revision(
   svn_error_t *err;
 
   SVN_ERR(log_command(b, conn, pool,
-                      svn_log__replay(b->fs_path->data, low_water_mark,
-                                      pool)));
+                      svn_log__replay(b->fs_path->data, rev, pool)));
 
   svn_ra_svn_get_editor(&editor, &edit_baton, conn, pool, NULL, NULL);
 

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/authz_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/authz_tests.py Wed Sep 11 16:54:18 2013
@@ -1390,6 +1390,21 @@ def upgrade_absent(sbox):
   svntest.actions.run_and_verify_update(sbox.wc_dir, expected_output,
                                         None, None)
 
+@Skip(svntest.main.is_ra_type_file)
+@Issue(4332)
+def authz_del_from_subdir(sbox):
+  "delete file without rights on the root"
+
+  sbox.build(create_wc = False)
+
+  write_authz_file(sbox, {"/": "* = ", "/A": "jrandom = rw"})
+
+  write_restrictive_svnserve_conf(sbox.repo_dir)
+
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                      'rm', sbox.repo_url + '/A/mu',
+                                      '-m', '')
+
 ########################################################################
 # Run the tests
 
@@ -1419,6 +1434,7 @@ test_list = [ None,
               wc_delete,
               wc_commit_error_handling,
               upgrade_absent,
+              authz_del_from_subdir,
              ]
 serial_only = True
 

Propchange: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/basic_tests.py
------------------------------------------------------------------------------
  Merged /subversion/branches/1.7.x-r1423646/subversion/tests/cmdline/basic_tests.py:r1423647-1424282
  Merged /subversion/branches/1.7.x/subversion/tests/cmdline/basic_tests.py:r1338667-1521932
  Merged /subversion/trunk/subversion/tests/cmdline/basic_tests.py:r1423646

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/blame_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/blame_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/blame_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/blame_tests.py Wed Sep 11 16:54:18 2013
@@ -858,6 +858,98 @@ def blame_multiple_targets(sbox):
   multiple_wc_targets()
   multiple_url_targets()
 
+@Issue(4034)
+def blame_eol_handling(sbox):
+  "blame it on the eol handling"
+
+  sbox.build()
+
+  if os.name == 'nt':
+    native_eol = '\r\n'
+  else:
+    native_eol = '\n'
+
+  for eol, prop, rev in [ ('\r',   'CR',         2),
+                          ('\n',   'LF',         4),
+                          ('\r\n', 'CRLF',       6),
+                          (native_eol, 'native', 8) ]:
+
+    f1 = sbox.ospath('blame-%s' % prop)
+    f2 = sbox.ospath('blame-%s-prop' % prop)
+
+    file_data = 'line 1 ' + eol + \
+                'line 2 ' + eol + \
+                'line 3 ' + eol + \
+                'line 4 ' + eol + \
+                'line 5 ' + eol
+
+    svntest.main.file_write(f1, file_data, mode='wb')
+    svntest.main.file_write(f2, file_data, mode='wb')
+
+    sbox.simple_add('blame-%s' % prop,
+                    'blame-%s-prop' % prop)
+    sbox.simple_propset('svn:eol-style', prop, 'blame-%s-prop' % prop)
+    sbox.simple_commit()
+
+    file_data = 'line 1 ' + eol + \
+                'line 2 ' + eol + \
+                'line 2a' + eol + \
+                'line 3 ' + eol + \
+                'line 4 ' + eol + \
+                'line 4a' + eol + \
+                'line 5 ' + eol
+
+    svntest.main.file_write(f1, file_data, mode='wb')
+    svntest.main.file_write(f2, file_data, mode='wb')
+
+    sbox.simple_commit()
+
+    expected_output = [
+        '     %d    jrandom line 1 \n' % rev,
+        '     %d    jrandom line 2 \n' % rev,
+        '     %d    jrandom line 2a\n' % (rev + 1),
+        '     %d    jrandom line 3 \n' % rev,
+        '     %d    jrandom line 4 \n' % rev,
+        '     %d    jrandom line 4a\n' % (rev + 1),
+        '     %d    jrandom line 5 \n' % rev,
+    ]
+
+    svntest.actions.run_and_verify_svn(f1 + '-base', expected_output, [],
+                                       'blame', f1)
+
+    svntest.actions.run_and_verify_svn(f2 + '-base', expected_output, [],
+                                       'blame', f2)
+
+    file_data = 'line 1 ' + eol + \
+                'line 2 ' + eol + \
+                'line 2a' + eol + \
+                'line 3 ' + eol + \
+                'line 3b' + eol + \
+                'line 4 ' + eol + \
+                'line 4a' + eol + \
+                'line 5 ' + eol
+
+    svntest.main.file_write(f1, file_data, mode='wb')
+    svntest.main.file_write(f2, file_data, mode='wb')
+
+    expected_output = [
+        '     %d    jrandom line 1 \n' % rev,
+        '     %d    jrandom line 2 \n' % rev,
+        '     %d    jrandom line 2a\n' % (rev + 1),
+        '     %d    jrandom line 3 \n' % rev,
+         '     -          - line 3b\n',
+        '     %d    jrandom line 4 \n' % rev,
+        '     %d    jrandom line 4a\n' % (rev + 1),
+        '     %d    jrandom line 5 \n' % rev,
+    ]
+
+    svntest.actions.run_and_verify_svn(f1 + '-modified', expected_output, [],
+                                       'blame', f1)
+
+    svntest.actions.run_and_verify_svn(f2 + '-modified', expected_output, [],
+                                       'blame', f2)
+
+
 ########################################################################
 # Run the tests
 
@@ -880,6 +972,7 @@ test_list = [ None,
               blame_output_after_merge,
               merge_sensitive_blame_and_empty_mergeinfo,
               blame_multiple_targets,
+              blame_eol_handling,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/diff_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/diff_tests.py Wed Sep 11 16:54:18 2013
@@ -2722,6 +2722,30 @@ def basic_diff_summarize(sbox):
   svntest.actions.run_and_verify_diff_summarize(expected_reverse_diff,
                                                 wc_dir, '-c-3')
 
+  # Get the differences between a newly added file 
+  expected_diff = svntest.wc.State(wc_dir, {
+    'newfile': Item(status='A '),
+    })
+  expected_reverse_diff = svntest.wc.State(wc_dir, {
+    'newfile': Item(status='D '),
+    })
+  svntest.actions.run_and_verify_diff_summarize(expected_diff,
+                                                p('newfile'), '-c3')
+  svntest.actions.run_and_verify_diff_summarize(expected_reverse_diff,
+                                                p('newfile'), '-c-3')
+
+  # Get the differences between a newly added dir 
+  expected_diff = svntest.wc.State(wc_dir, {
+    'P': Item(status='A '),
+    })
+  expected_reverse_diff = svntest.wc.State(wc_dir, {
+    'P': Item(status='D '),
+    })
+  svntest.actions.run_and_verify_diff_summarize(expected_diff,
+                                                p('P'), '-c3')
+  svntest.actions.run_and_verify_diff_summarize(expected_reverse_diff,
+                                                p('P'), '-c-3')
+
 #----------------------------------------------------------------------
 def diff_weird_author(sbox):
   "diff with svn:author that has < in it"
@@ -3326,7 +3350,6 @@ def diff_url_against_local_mods(sbox):
 #----------------------------------------------------------------------
 # Diff against old revision of the parent directory of a removed and
 # locally re-added file.
-@XFail()
 @Issue(3797)
 def diff_preexisting_rev_against_local_add(sbox):
   "diff -r1 of dir with removed-then-readded file"
@@ -3406,6 +3429,52 @@ def diff_git_format_wc_wc(sbox):
   svntest.actions.run_and_verify_svn(None, expected, [], 'diff',
                                      '--git', wc_dir)
 
+@Issue(4294)
+def diff_git_format_wc_wc_dir_mv(sbox):
+  "create a diff in git unidff format for wc dir mv"
+  sbox.build()
+  wc_dir = sbox.wc_dir
+  g_path = sbox.ospath('A/D/G')
+  g2_path = sbox.ospath('A/D/G2')
+  pi_path = sbox.ospath('A/D/G/pi')
+  rho_path = sbox.ospath('A/D/G/rho')
+  tau_path = sbox.ospath('A/D/G/tau')
+  new_pi_path = sbox.ospath('A/D/G2/pi')
+  new_rho_path = sbox.ospath('A/D/G2/rho')
+  new_tau_path = sbox.ospath('A/D/G2/tau')
+
+  svntest.main.run_svn(None, 'mv', g_path, g2_path)
+
+  expected_output = make_git_diff_header(pi_path, "A/D/G/pi",
+                                         "revision 1", "working copy",
+                                         delete=True) \
+  + [
+    "@@ -1 +0,0 @@\n",
+    "-This is the file 'pi'.\n"
+  ] + make_git_diff_header(rho_path, "A/D/G/rho",
+                           "revision 1", "working copy",
+                           delete=True) \
+  + [
+    "@@ -1 +0,0 @@\n",
+    "-This is the file 'rho'.\n"
+  ] + make_git_diff_header(tau_path, "A/D/G/tau",
+                           "revision 1", "working copy",
+                           delete=True) \
+  + [
+    "@@ -1 +0,0 @@\n",
+    "-This is the file 'tau'.\n"
+  ] + make_git_diff_header(new_pi_path, "A/D/G2/pi", None, None, cp=True,
+                           copyfrom_path="A/D/G/pi", text_changes=False) \
+  + make_git_diff_header(new_rho_path, "A/D/G2/rho", None, None, cp=True,
+                         copyfrom_path="A/D/G/rho", text_changes=False) \
+  + make_git_diff_header(new_tau_path, "A/D/G2/tau", None, None, cp=True,
+                         copyfrom_path="A/D/G/tau", text_changes=False)
+
+  expected = svntest.verify.UnorderedOutput(expected_output)
+
+  svntest.actions.run_and_verify_svn(None, expected, [], 'diff',
+                                     '--git', wc_dir)
+
 def diff_git_format_url_wc(sbox):
   "create a diff in git unidiff format for url-wc"
   sbox.build()
@@ -3875,6 +3944,7 @@ test_list = [ None,
               diff_abs_localpath_from_wc_folder,
               no_spurious_conflict,
               diff_deleted_url,
+              diff_git_format_wc_wc_dir_mv,
               ]
 
 if __name__ == '__main__':

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/externals_tests.py Wed Sep 11 16:54:18 2013
@@ -2309,6 +2309,45 @@ def url_to_wc_copy_of_externals(sbox):
     "OUTPUT", expected_stdout, [], 0, 'copy', repo_url + '/A/C',
     os.path.join(wc_dir, 'External-WC-to-URL-Copy'))
 
+# Test for issue #3741 'externals not removed when working copy is made shallow'
+@Issue(3741)
+def update_dir_external_shallow(sbox):
+  "shallow update should remove externals"
+
+  sbox.build()
+
+  # Create an external in r2
+  sbox.simple_propset('svn:externals', '^/A/D/H X', 'A/B/E')
+  sbox.simple_commit()
+  sbox.simple_update()
+
+  # Now make A/B/E shallow by updating with "--set-depth empty"
+  expected_output = svntest.wc.State(sbox.wc_dir, {
+    'A/B/E/alpha' : Item(status='D '),
+    'A/B/E/X'     : Item(verb='Removed external'),
+    'A/B/E/beta'  : Item(status='D '),
+  })
+  svntest.actions.run_and_verify_update(sbox.wc_dir,
+                                        expected_output, None, None,
+                                        None, None, None, None, None, False,
+                                        '--set-depth=empty',
+                                        sbox.ospath('A/B/E'))
+
+  # And bring the external back by updating with "--set-depth infinity"
+  expected_output = svntest.wc.State(sbox.wc_dir, {
+    'A/B/E/X/psi'   : Item(status='A '),
+    'A/B/E/X/chi'   : Item(status='A '),
+    'A/B/E/X/omega' : Item(status='A '),
+    'A/B/E/alpha'   : Item(status='A '),
+    'A/B/E/beta'    : Item(status='A '),
+  })
+  svntest.actions.run_and_verify_update(sbox.wc_dir,
+                                        expected_output, None, None,
+                                        None, None, None, None, None, False,
+                                        '--set-depth=infinity',
+                                        sbox.ospath('A/B/E'))
+
+
 ########################################################################
 # Run the tests
 
@@ -2353,6 +2392,7 @@ test_list = [ None,
               remap_file_external_with_prop_del,
               dir_external_with_dash_r_only,
               url_to_wc_copy_of_externals,
+              update_dir_external_shallow,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/merge_tests.py Wed Sep 11 16:54:18 2013
@@ -17438,6 +17438,176 @@ def merge_with_added_subtrees_with_merge
                                        None, None, None, None,
                                        None, 1, 0)
 
+#----------------------------------------------------------------------
+@SkipUnless(server_has_mergeinfo)
+def merge_with_externals_with_mergeinfo(sbox):
+  "merge with externals with mergeinfo"
+
+  # Some paths we'll care about.
+  A_path = sbox.ospath('A')
+  A_COPY_path = sbox.ospath('A_COPY')
+  file_external_path = sbox.ospath('A/file-external')
+  mu_COPY_path = sbox.ospath('A_COPY/mu')
+  mu_path = sbox.ospath('A/mu')
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # Make a branch of ^/A and then make a few edits under A in r3-6:
+  wc_disk, wc_status = set_up_branch(sbox)
+
+  svntest.main.file_write(mu_COPY_path, "branch edit")
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+                                     'file edit on the branch', wc_dir)
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+
+  # Create a file external under 'A' and set some bogus mergeinfo
+  # on it (the fact that this mergeinfo is bogus has no bearing on
+  # this test).
+  svntest.actions.run_and_verify_svn(None, None, [], 'propset',
+                                     'svn:externals',
+                                     '^/iota file-external', A_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+                                     'set file external', wc_dir)
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ps', SVN_PROP_MERGEINFO,
+                                     "/bogus-mergeinfo:5", file_external_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+                                     'set mergeinfo on file external',
+                                     file_external_path)
+
+  # Sync merge ^/A to A_COPY and then reintegrate A_COPY back to A.
+  svntest.actions.run_and_verify_svn(None, None, [], 'merge',
+                                     sbox.repo_url + '/A', A_COPY_path)
+  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+                                     'sync merge', wc_dir)
+  # This was segfaulting, see
+  # http://svn.haxx.se/dev/archive-2012-10/0364.shtml
+  svntest.actions.run_and_verify_svn(
+    None,
+    expected_merge_output(None,
+                          ['U    ' + mu_path + '\n',
+                           ' U   ' + A_path  + '\n'],
+                          two_url=True),
+    [], 'merge', '--reintegrate', sbox.repo_url + '/A_COPY',
+    A_path)
+
+@SkipUnless(server_has_mergeinfo)
+@Issue(4306)
+# Test for issue #4306 'multiple editor drive file merges record wrong
+# mergeinfo during conflicts'
+def conflict_aborted_mergeinfo_described_partial_merge(sbox):
+  "conflicted split merge can be repeated"
+
+  sbox.build()
+
+  trunk = 'A'
+  branch = 'A2'
+  file = 'mu'
+  trunk_file = 'A/mu'
+
+  # r2: initial state
+  file_text = 'line 1\n'
+  for i in range(2, 22):
+    file_text += 'line ' + str(i) + '.\n'
+  svntest.main.file_write(sbox.ospath('A/mu'), file_text)
+  sbox.simple_commit()
+
+  # r3: branch
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', sbox.wc_dir)
+  sbox.simple_copy(trunk, branch)
+  sbox.simple_commit()
+
+  # r4 through r13: simple edits
+  for r in range (1, 11):
+    file_text = file_text.replace('line ' + str(r*2) + '.', 'line ' +
+                                  str(r*2) + ' Edited in r' + str(r+3) + '.')
+    svntest.main.file_write(sbox.ospath('A/mu'), file_text)
+    sbox.simple_commit()
+
+  # r14: merge some changes to the branch so that later merges will be split
+  svntest.actions.run_and_verify_svn(None, None, [], 'merge', '-c5,9',
+                                     '^/' + trunk, sbox.ospath(branch),
+                                     '--accept', 'theirs-conflict')
+  sbox.simple_commit()
+  svntest.actions.run_and_verify_svn(None, None, [], 'up', sbox.wc_dir)
+
+  def try_merge(target, conflict_rev, rev_ranges, mergeinfo, expect_error=True):
+    """Revert TARGET_PATH in the branch; merge TARGET_PATH in the trunk
+       to TARGET_PATH in the branch; expect to find MERGEINFO.
+    """
+    src_url = '^/' + trunk + '/' + target
+    src_path = trunk + '/' + target
+    tgt_path = branch + '/' + target
+    svntest.actions.run_and_verify_svn(None, None, [], 'revert', '-R',
+                                       sbox.ospath(tgt_path))
+    file_text = open(sbox.ospath(tgt_path), 'r').read()
+    r = conflict_rev - 3
+    file_text = file_text.replace('line ' + str(r*2) + '.', 'line ' +
+                                  str(r*2) + ' Conflicted.')
+    svntest.main.file_write(sbox.ospath('A2/mu'), file_text)
+
+    if expect_error:
+      expected_error = ('^svn: E155015: .* conflicts were produced .* into$'
+                        "|^'.*" + sbox.ospath(tgt_path) + "' --$"
+                        '|^resolve all conflicts .* remaining$'
+                        '|^unmerged revisions$')
+    else:
+      expected_error = []
+    svntest.actions.run_and_verify_svn(None, None, expected_error,
+                                       'merge',
+                                       src_url, sbox.ospath(tgt_path),
+                                       '--accept', 'postpone',
+                                       *rev_ranges)
+    expected_out = ['/' + src_path + ':' + mergeinfo + '\n']
+    svntest.actions.run_and_verify_svn(
+      "Incorrect mergeinfo set during conflict aborted merge",
+      expected_out, [], 'pg', SVN_PROP_MERGEINFO, sbox.ospath(tgt_path))
+
+  # In a mergeinfo-aware merge, each specified revision range is split
+  # internally into sub-ranges, to avoid any already-merged revisions.
+  #
+  # From white-box inspection, we see there are code paths that treat
+  # the last specified range and the last sub-range specially.  The
+  # first specified range or sub-range is not treated specially in terms
+  # of the code paths, although it might be in terms of data flow.
+  #
+  # We test merges that raise a conflict in the first and last sub-range
+  # of the first and last specified range.
+
+  # First test: Merge "everything" to the branch.
+  #
+  # This merge is split into three sub-ranges: r3-4, r6-8, r10-head.
+  # We have arranged that the merge will raise a conflict in the first
+  # sub-range.  Since we are postponing conflict resolution, the merge
+  # should stop after the first sub-range, allowing us to resolve and
+  # repeat the merge at which point the next sub-range(s) can be merged.
+  # The mergeinfo on the target then should only reflect that the first
+  # sub-range (r3-4) has been merged.
+  #
+  # Previously the merge failed after merging only r3-4 (as it should)
+  # but mergeinfo for the whole range was recorded, preventing subsequent
+  # repeat merges from applying the rest of the source changes.
+  try_merge(file, 4, [], '3-5,9')
+
+  # Try a multiple-range merge that raises a conflict in the
+  # first sub-range in the first specified range.
+  try_merge(file, 4, ['-r1:6', '-r7:10'], '3-5,9')
+
+  # Try a multiple-range merge that raises a conflict in the
+  # last sub-range in the first specified range.
+  try_merge(file, 6, ['-r1:6', '-r7:10'], '3-6,9')
+
+  # Try a multiple-range merge that raises a conflict in the
+  # first sub-range in the last specified range.
+  try_merge(file, 8, ['-r1:6', '-r7:10'], '3-6,8-9')
+
+  # Try a multiple-range merge that raises a conflict in the
+  # last sub-range in the last specified range.
+  # (Expect no error, because 'svn merge' does not throw an error if
+  # there is no more merging to do when a conflict occurs.)
+  try_merge(file, 10, ['-r1:6', '-r7:10'], '3-6,8-10', expect_error=False)
+
 ########################################################################
 # Run the tests
 
@@ -17569,6 +17739,8 @@ test_list = [ None,
               reverse_merge_with_rename,
               merge_adds_then_deletes_subtree,
               merge_with_added_subtrees_with_mergeinfo,
+              merge_with_externals_with_mergeinfo,
+              conflict_aborted_mergeinfo_described_partial_merge,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/patch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/patch_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/patch_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/patch_tests.py Wed Sep 11 16:54:18 2013
@@ -3866,24 +3866,57 @@ def patch_target_no_eol_at_eof(sbox):
 
   patch_file_path = make_patch_path(sbox)
   iota_path = os.path.join(wc_dir, 'iota')
+  mu_path = sbox.ospath('A/mu')
 
   iota_contents = [
     "This is the file iota."
   ]
 
+  mu_contents = [
+    "context\n",
+    "context\n",
+    "context\n",
+    "context\n",
+    "This is the file mu.\n",
+    "context\n",
+    "context\n",
+    "context\n",
+    "context", # no newline at end of file
+  ]
+
   svntest.main.file_write(iota_path, ''.join(iota_contents))
+  svntest.main.file_write(mu_path, ''.join(mu_contents))
   expected_output = svntest.wc.State(wc_dir, {
     'iota'  : Item(verb='Sending'),
+    'A/mu'  : Item(verb='Sending'),
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak('iota', wc_rev=2)
+  expected_status.tweak('A/mu', wc_rev=2)
   svntest.actions.run_and_verify_commit(wc_dir, expected_output,
                                         expected_status, None, wc_dir)
   unidiff_patch = [
-    "--- iota\t(revision 1)\n",
+    "Index: A/mu\n",
+    "===================================================================\n",
+    "--- A/mu\t(revision 2)\n",
+    "+++ A/mu\t(working copy)\n",
+    "@@ -2,8 +2,8 @@ context\n",
+    " context\n",
+    " context\n",
+    " context\n",
+    "-This is the file mu.\n",
+    "+It is really the file mu.\n",
+    " context\n",
+    " context\n",
+    " context\n",
+    " context\n",
+    "\\ No newline at end of file\n",
+    "Index: iota\n",
+    "===================================================================\n",
+    "--- iota\t(revision 2)\n",
     "+++ iota\t(working copy)\n",
-    "@@ -1,7 +1,7 @@\n",
-    "-This is the file iota.\n"
+    "@@ -1 +1 @@\n",
+    "-This is the file iota.\n",
     "\\ No newline at end of file\n",
     "+It is really the file 'iota'.\n",
     "\\ No newline at end of file\n",
@@ -3894,15 +3927,29 @@ def patch_target_no_eol_at_eof(sbox):
   iota_contents = [
     "It is really the file 'iota'."
   ]
+  mu_contents = [
+    "context\n",
+    "context\n",
+    "context\n",
+    "context\n",
+    "It is really the file mu.\n",
+    "context\n",
+    "context\n",
+    "context\n",
+    "context", # no newline at end of file
+  ]
   expected_output = [
+    'U         %s\n' % os.path.join(wc_dir, 'A', 'mu'),
     'U         %s\n' % os.path.join(wc_dir, 'iota'),
   ]
 
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.tweak('iota', contents=''.join(iota_contents))
+  expected_disk.tweak('A/mu', contents=''.join(mu_contents))
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak('iota', status='M ', wc_rev=2)
+  expected_status.tweak('A/mu', status='M ', wc_rev=2)
 
   expected_skip = wc.State('', { })
 

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/revert_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/revert_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/revert_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/revert_tests.py Wed Sep 11 16:54:18 2013
@@ -1585,6 +1585,52 @@ def revert_with_unversioned_targets(sbox
   actual_disk = svntest.tree.build_tree_from_wc(wc_dir, 1)
   svntest.tree.compare_trees("disk", actual_disk, expected_disk.old_tree())
 
+@Issue(4168)
+def revert_obstructing_wc(sbox):
+  "revert with an obstructing working copy"
+  
+  sbox.build(create_wc=False, read_only=True)
+  wc_dir = sbox.wc_dir
+  
+  expected_output = svntest.wc.State(wc_dir, {})
+  expected_disk = svntest.wc.State(wc_dir, {})  
+  
+  # Checkout wc as depth empty
+  svntest.actions.run_and_verify_checkout(sbox.repo_url, wc_dir,
+                                          expected_output, expected_disk,
+                                          None, None, None, None,
+                                          '--depth', 'empty')
+
+  # And create an obstructing working copy as A
+  svntest.actions.run_and_verify_checkout(sbox.repo_url, wc_dir + '/A',
+                                          expected_output, expected_disk,
+                                          None, None, None, None,
+                                          '--depth', 'empty')
+
+  # Now try to fetch the entire wc, which will find an obstruction
+  expected_output = svntest.wc.State(wc_dir, {
+    'A'     : Item(verb='Skipped'),
+    'iota'  : Item(status='A '),
+  })
+  expected_status = svntest.wc.State(wc_dir, {
+    ''      : Item(status='  ', wc_rev='1'),
+    'iota'  : Item(status='  ', wc_rev='1'),
+    # A is not versioned but exists
+  })
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output, None, expected_status,
+                                        None, None, None,
+                                        None, None, None,
+                                        wc_dir, '--set-depth', 'infinity')
+
+  # Revert should do nothing (no local changes), and report the obstruction
+  # (reporting the obstruction is nice for debuging, but not really required
+  #  in this specific case, as the node was not modified)
+  svntest.actions.run_and_verify_svn(None, "Skipped '.*A' -- .*obstruct.*", [],
+                                     'revert', '-R', wc_dir)
+
+
 ########################################################################
 # Run the tests
 
@@ -1623,6 +1669,7 @@ test_list = [ None,
               revert_no_text_change_conflict,
               revert_no_text_change_conflict_recursive,
               revert_with_unversioned_targets,
+              revert_obstructing_wc
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/special_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/special_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/special_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/special_tests.py Wed Sep 11 16:54:18 2013
@@ -937,6 +937,115 @@ def externals_as_symlink_targets(sbox):
   sbox.simple_commit()
     
 
+#----------------------------------------------------------------------
+def incoming_symlink_changes(sbox):
+  "verify incoming symlink change behavior"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  sbox.simple_add_symlink('iota', 's-replace')
+  sbox.simple_add_symlink('iota', 's-in-place')
+  sbox.simple_add_symlink('iota', 's-type')
+  sbox.simple_append('s-reverse', 'link iota')
+  sbox.simple_add('s-reverse')
+  sbox.simple_commit() # r2
+
+  # Replace s-replace
+  sbox.simple_rm('s-replace')
+  # Note that we don't use 'A/mu' as the length of that matches 'iota', which
+  # would make us depend on timestamp changes for detecting differences.
+  sbox.simple_add_symlink('A/D/G/pi', 's-replace')
+
+  # Change target of s-in-place
+  if svntest.main.is_posix_os():
+    os.remove(sbox.ospath('s-in-place'))
+    os.symlink('A/D/G/pi', sbox.ospath('s-in-place'))
+  else:
+    sbox.simple_append('s-in-place', 'link A/D/G/pi', truncate = True)
+
+  # r3
+  expected_output = svntest.wc.State(wc_dir, {
+    's-replace'         : Item(verb='Replacing'),
+    's-in-place'        : Item(verb='Sending'),
+  })
+  svntest.actions.run_and_verify_commit(wc_dir,
+                                        expected_output, None, None,
+                                        wc_dir)
+
+  # r4
+  svntest.main.run_svnmucc('propdel', 'svn:special',
+                           sbox.repo_url + '/s-type',
+                           '-m', 'Turn s-type into a file')
+
+  # r5
+  svntest.main.run_svnmucc('propset', 'svn:special', 'X',
+                           sbox.repo_url + '/s-reverse',
+                           '-m', 'Turn s-reverse into a symlink')
+
+  # Currently we expect to see 'U'pdates, but we would like to see
+  # replacements
+  expected_output = svntest.wc.State(wc_dir, {
+    's-reverse'         : Item(status=' U'),
+    's-type'            : Item(status=' U'),
+  })
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 5)
+  expected_status.add({
+    's-type'            : Item(status='  ', wc_rev='5'),
+    's-replace'         : Item(status='  ', wc_rev='5'),
+    's-reverse'         : Item(status='  ', wc_rev='5'),
+    's-in-place'        : Item(status='  ', wc_rev='5'),
+  })
+
+  # Update to HEAD/r5 to fetch the r4 and r5 symlink changes
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        None,
+                                        expected_status,
+                                        None, None, None, None, None,
+                                        check_props=True)
+
+  # Update back to r2, to prepare some local changes
+  expected_output = svntest.wc.State(wc_dir, {
+    # s-replace is D + A
+    's-replace'         : Item(status='A '),
+    's-in-place'        : Item(status='U '),
+    's-reverse'         : Item(status=' U'),
+    's-type'            : Item(status=' U'),
+  })
+  expected_status.tweak(wc_rev=2)
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        None,
+                                        expected_status,
+                                        None, None, None, None, None,
+                                        True,
+                                        wc_dir, '-r', '2')
+
+  # Ok, now add a property on all of them to make future symlinkness changes
+  # a tree conflict
+  # ### We should also try this with a 'textual change'
+  sbox.simple_propset('x', 'y', 's-replace', 's-in-place', 's-reverse', 's-type')
+
+  expected_output = svntest.wc.State(wc_dir, {
+    's-replace'         : Item(status='  ', treeconflict='A'),
+    's-in-place'        : Item(status='U '),
+    's-reverse'         : Item(status='  ', treeconflict='C'),
+    's-type'            : Item(status='  ', treeconflict='C'),
+  })
+  expected_status.tweak(wc_rev=5)
+  expected_status.tweak('s-replace', 's-reverse', 's-type', status='RM',
+                        copied='+', treeconflict='C', wc_rev='-')
+  expected_status.tweak('s-in-place', status=' M')
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        None,
+                                        expected_status,
+                                        None, None, None, None, None,
+                                        True)
+
 ########################################################################
 # Run the tests
 
@@ -965,6 +1074,7 @@ test_list = [ None,
               symlink_to_wc_svnversion,
               update_symlink,
               externals_as_symlink_targets,
+              incoming_symlink_changes,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svnrdump_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svnrdump_tests.py?rev=1521935&r1=1521934&r2=1521935&view=diff
==============================================================================
--- subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svnrdump_tests.py (original)
+++ subversion/branches/1.7.x-issue4153/subversion/tests/cmdline/svnrdump_tests.py Wed Sep 11 16:54:18 2013
@@ -375,6 +375,12 @@ def copy_bad_line_endings_dump(sbox):
                 expected_dumpfile_name="copy-bad-line-endings.expected.dump",
                 bypass_prop_validation=True)
 
+@Issue(4263)
+def copy_bad_line_endings_load(sbox):
+  "load: inconsistent line endings in svn:* props"
+  run_load_test(sbox, "copy-bad-line-endings.dump",
+                expected_dumpfile_name="copy-bad-line-endings.expected.dump")
+          
 @Skip(svntest.main.is_ra_type_dav_serf)
 def copy_bad_line_endings2_dump(sbox):
   "dump: non-LF line endings in svn:* props"
@@ -796,6 +802,7 @@ test_list = [ None,
               move_and_modify_in_the_same_revision_dump,
               move_and_modify_in_the_same_revision_load,
               copy_bad_line_endings_dump,
+              copy_bad_line_endings_load,
               copy_bad_line_endings2_dump,
               commit_a_copy_of_root_dump,
               commit_a_copy_of_root_load,