You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2012/02/17 11:52:41 UTC

svn commit: r1245385 [1/5] - in /subversion/branches/1.7.x-r1210147: ./ contrib/server-side/mod_dontdothat/ notes/api-errata/1.7/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ subversion/bindings/javahl/tests/org/apache/subversion/javahl...

Author: julianfoad
Date: Fri Feb 17 10:52:38 2012
New Revision: 1245385

URL: http://svn.apache.org/viewvc?rev=1245385&view=rev
Log:
On the 1.7.x-r1210147 branch: Catch up to 1.7.x@1245382.

Added:
    subversion/branches/1.7.x-r1210147/tools/examples/info.rb
      - copied unchanged from r1245382, subversion/branches/1.7.x/tools/examples/info.rb
    subversion/branches/1.7.x-r1210147/tools/server-side/mod_dontdothat/   (props changed)
      - copied from r1245382, subversion/branches/1.7.x/tools/server-side/mod_dontdothat/
Removed:
    subversion/branches/1.7.x-r1210147/contrib/server-side/mod_dontdothat/
Modified:
    subversion/branches/1.7.x-r1210147/   (props changed)
    subversion/branches/1.7.x-r1210147/CHANGES   (contents, props changed)
    subversion/branches/1.7.x-r1210147/STATUS
    subversion/branches/1.7.x-r1210147/build.conf
    subversion/branches/1.7.x-r1210147/notes/api-errata/1.7/ra001.txt
    subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
    subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
    subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/include/svn_containers.swg
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/client.py
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/mergeinfo.py
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
    subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/svn/core.rb
    subversion/branches/1.7.x-r1210147/subversion/include/private/svn_wc_private.h
    subversion/branches/1.7.x-r1210147/subversion/include/svn_version.h
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/commit_util.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/copy.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/diff.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/export.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/externals.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/merge.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/mergeinfo.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/patch.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_client/ra.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_diff/parse-diff.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_fs_fs/fs_fs.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_neon/log.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_serf/log.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_serf/serf.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_serf/update.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_serf/util.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_svn/cyrus_auth.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_repos/rev_hunt.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_subr/dirent_uri.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_subr/io.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_subr/opt.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_subr/svn_base64.c   (contents, props changed)
    subversion/branches/1.7.x-r1210147/subversion/libsvn_wc/adm_ops.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_wc/externals.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_wc/info.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_wc/node.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_wc/status.c
    subversion/branches/1.7.x-r1210147/subversion/libsvn_wc/wc.h
    subversion/branches/1.7.x-r1210147/subversion/libsvn_wc/wc_db.c
    subversion/branches/1.7.x-r1210147/subversion/mod_dav_svn/dav_svn.h
    subversion/branches/1.7.x-r1210147/subversion/mod_dav_svn/liveprops.c
    subversion/branches/1.7.x-r1210147/subversion/mod_dav_svn/reports/log.c
    subversion/branches/1.7.x-r1210147/subversion/mod_dav_svn/reports/update.c
    subversion/branches/1.7.x-r1210147/subversion/mod_dav_svn/repos.c
    subversion/branches/1.7.x-r1210147/subversion/mod_dav_svn/util.c
    subversion/branches/1.7.x-r1210147/subversion/po/zh_CN.po
    subversion/branches/1.7.x-r1210147/subversion/svn/main.c
    subversion/branches/1.7.x-r1210147/subversion/svn/status.c
    subversion/branches/1.7.x-r1210147/subversion/svnlook/main.c
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/commit_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/copy_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/depth_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/diff_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/externals_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/merge_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/mergeinfo_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/patch_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/special_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/stat_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/svnrdump_tests.py
    subversion/branches/1.7.x-r1210147/subversion/tests/cmdline/svntest/sandbox.py
    subversion/branches/1.7.x-r1210147/subversion/tests/libsvn_diff/parse-diff-test.c
    subversion/branches/1.7.x-r1210147/subversion/tests/libsvn_wc/   (props changed)
    subversion/branches/1.7.x-r1210147/tools/examples/get-location-segments.py

Propchange: subversion/branches/1.7.x-r1210147/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 17 10:52:38 2012
@@ -1,5 +1,6 @@
+/subversion/1.7.x-issue4059:1239661-1239744
 /subversion/branches/1.5.x-r30215:870312
-/subversion/branches/1.7.x:1213306-1220807
+/subversion/branches/1.7.x:1213306-1245382
 /subversion/branches/1.7.x-JavaHL-pools:1158684-1158722
 /subversion/branches/1.7.x-issue3888:1148937-1149162
 /subversion/branches/1.7.x-issue3975:1160761-1161546
@@ -7,6 +8,8 @@
 /subversion/branches/1.7.x-issue4032:1186668-1186784
 /subversion/branches/1.7.x-issue4035:1186202-1186315
 /subversion/branches/1.7.x-issue4035-r1185738:1186316-1186778
+/subversion/branches/1.7.x-issue4059:1239745-1242661
+/subversion/branches/1.7.x-issue4093:1229839-1230236
 /subversion/branches/1.7.x-issue4k:1166502-1167193
 /subversion/branches/1.7.x-neon-default:1148803-1158680
 /subversion/branches/1.7.x-r1152189:1152759-1154249
@@ -17,6 +20,9 @@
 /subversion/branches/1.7.x-r1180154:1186224-1186351
 /subversion/branches/1.7.x-r1201824:1202121-1207333
 /subversion/branches/1.7.x-r1213331:1213684-1213756
+/subversion/branches/1.7.x-r1232221:1232358-1238008
+/subversion/branches/1.7.x-r1236343:1236628-1239394
+/subversion/branches/1.7.x-svn-patch-eol-fixes:1207511-1235924
 /subversion/branches/atomic-revprop:965046-1000689
 /subversion/branches/bdb-reverse-deltas:872050-872529
 /subversion/branches/diff-callbacks3:870059-870761
@@ -71,4 +77,4 @@
 /subversion/branches/tree-conflicts:868291-873154
 /subversion/branches/tree-conflicts-notify:873926-874008
 /subversion/branches/uris-as-urls:1060426-1064427
-/subversion/trunk:1146013,1146121,1146219,1146222,1146274,1146492,1146555,1146606,1146620,1146684,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,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,115
 6098,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,1158924,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,1163383,1163557,1163792,1163953,1164027,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174652,1174761,1174797-1174798,1174806,1175888,1176915,1176949,1177001,1177492,1177732,1178280,1178282,1178942,1179680,1179767,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,1197135,1197998,1199876,1199950,1200837,1201002,1201824,1202132,1202135,1202187,1202333,1202630,1202807,1203546,1203651,1203653,1204167,1204478,1204610,1204673,1205193,1205726,1205839,1205848,1206523,1206533,1207858,1207949,1210147,1210195,1211483,1211859,1211885,1213331,1213673,1213681,1213690,1213711,1213716,1214139,1220740
+/subversion/trunk: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,115
 5404,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,1164386,1164426,1164517,1164535,1164554,1164580,1164614,1164645,1164760,1164765,1166267,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1167659,1167681,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174652,1174761,1174797-1174798,1174806,1175888,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,1195480,1197135,1197998,1199876,1199950,1200837,1201002,1201072,1201419,1201824,1202132,1202135,1202187,1202333,1202630,1202807,1203546,1203651,1203653,1204167,1204478,1204610,1204673,1205188,1205193,1205209,1205726,1205839,1205848,1206523,1206533,1206576,1206718-1206719,1206724,1206741,1206748,1207555,1207656,1207663,1207808,1207823,1207858,1207949,1208840,1209631,1209654,1210147,1210195,1211483,1211859,1211885,1212476,1212482,1212484,1213331,1213673,1213681,1213690,1213711,12137
 16,1214139,1215260,1215288,1215374-1215375,1215379,1220740,1220742,1220750,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,1231029,1231944-1231945,1232202,1232207,1232221-1232222,1232413,1235264,1235296,1235302,1235736,1236163,1236173,1236283,1236343,1237720,1239382,1239596,1239631,1239655,1239747,1240314,1240485,1240752,1241530,1241553,1241713,1241726,1242116,1242537,1242607

Modified: subversion/branches/1.7.x-r1210147/CHANGES
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/CHANGES?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/CHANGES (original)
+++ subversion/branches/1.7.x-r1210147/CHANGES Fri Feb 17 10:52:38 2012
@@ -1,3 +1,52 @@
+Version 1.7.3
+(14 Feb 2012, from /branches/1.7.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.7.3
+
+  General:
+    * ship mod_dontdothat with the standard release
+
+  User-visible changes:
+    * fix segfault on 'svn rm $ROOT_URL' (issue #4074)
+    * replace a couple of assertions in favor of errors (r1207858, -949)
+    * fix a server assert after being upgraded (r1210195)
+    * fix segfault on 'svn mkdir svn://localhost' (r1211483)
+    * make 'svnadmin recover' prune the rep cache (r1213331, et al)
+    * make svnmucc use values from --config-dir option
+    * update and clarify the merge help text (r1154121, et al)
+    * replace wc assertion with informative error (r1222521, -693)
+    * copy permissions correctly for FSFS dirs (r1229252)
+    * improve 'svn log --with-all-revprops' over ra-dav (issue #4082)
+    * fix segfault when remapping a file external (issue #4093)
+    * fix segfault caused by obstructing unversioned dir (r1229677)
+    * fix regression on first update of external dir with '-r' (issue #4053)
+    * fix various EOL-handling problems in 'svn patch' (issues #3814, #3991)
+    * fix segfault in 'svn revert' (r1229303)
+    * improve correctness of 'svn patch --dry-run' (r1231944, -5)
+    * enforce revisions given in 'svn:externals' (issue #4053)
+    * fix potential corruption on 32-bit FSFS with large files (r1230212)
+    * make 'svn status --xml' show new files (issue #4097)
+    * fix 'svn mergeinfo' correctness (issue #4050)
+    * return the correct status for non-present nodes (r1232202, -07, -21, -22)
+    * improve SASL error messages (r1236343, et al)
+    * improve server cert error code for ra_serf (r1232413)
+    * fix SVNParentPath listings for parent path symlinks (r1221767, -80)
+    * fix mod_dav_svn's handling of POST errors (issue #4086)
+    * log some mod_dav_svn errors, rather than ignoring them (r1237720, -9596)
+    * relax requirements for canonicalization in mod_dav_svn (r1236173)
+    * fix a rare source of FSFS corruption (r1240752)
+    * allow committing the result of some copy operations (issue #4059)
+    * prevent one-byte buffer overflow in base64 decoding (r1242337)
+
+  Developer-visible changes:
+    * JavaHL: Add missing notify action, fixing an exception (r1221793)
+    * fix swig-py memory leak (r1235264, -296, -302, -736)
+    * fix spurious test suite failure (r1220742, -50)
+    * allow running tests on UNC shares (r1225491)
+    * bindings: see platform-specific password providers (r1242660, -1)
+    * skip 'svnrdump dump' tests over ra_serf (r1242537)
+    * convert a few ra_serf assertions to errors (r1242607)
+
+
 Version 1.7.2
 (02 Dec 2011, from /branches/1.7.x)
 http://svn.apache.org/repos/asf/subversion/tags/1.7.2

Propchange: subversion/branches/1.7.x-r1210147/CHANGES
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Feb 17 10:52:38 2012
@@ -1,5 +1,5 @@
 /subversion/branches/1.5.x-r30215/CHANGES:870312
-/subversion/branches/1.7.x/CHANGES:1213306-1220745
+/subversion/branches/1.7.x/CHANGES:1213306-1245382
 /subversion/branches/1.7.x-JavaHL-pools/CHANGES:1158684-1158722
 /subversion/branches/1.7.x-issue3888/CHANGES:1148937-1149162
 /subversion/branches/1.7.x-neon-default/CHANGES:1148803-1158680
@@ -60,4 +60,4 @@
 /subversion/branches/tree-conflicts/CHANGES:868291-873154
 /subversion/branches/tree-conflicts-notify/CHANGES:873926-874008
 /subversion/branches/uris-as-urls/CHANGES:1060426-1064427
-/subversion/trunk/CHANGES:1145993-1200899,1204598-1207934,1207949,1210195,1211483,1211859,1211885
+/subversion/trunk/CHANGES:1145993-1200899,1204598-1207934,1207949,1210195,1211483,1211859,1211885,1228376-1239205,1242001-1242812,1242814-1242816

Modified: subversion/branches/1.7.x-r1210147/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/STATUS?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/STATUS (original)
+++ subversion/branches/1.7.x-r1210147/STATUS Fri Feb 17 10:52:38 2012
@@ -10,7 +10,7 @@ See http://subversion.apache.org/docs/co
 for details on how release lines and voting work, what kinds of bugs can
 delay a release, etc.
 
-Status of 1.7.3:
+Status of 1.7.4:
 
 Candidate changes:
 ==================
@@ -24,64 +24,6 @@ Candidate changes:
      -0: stsp (we can backport these when we need to)
      -0: gstein
 
- * r1201072, r1205188, r1205209
-   Fix issue #4050 "'svn mergeinfo' always considers non-inheritable ranges
-   as partially merged".
-   Justification:
-     'svn mergeinfo' gave incorrect answers in what is admittedly an edge
-     case, but the fix is very simple.
-   Notes:
-     r1201072 and r1205188 are a new test and minor tweak respectively.
-     r1205209 is the fix.
-   Votes:
-     +1: pburba
-
- * r1207555, r1207808
-   mod_dontdothat: contrib/ -> tools/ and relicense under ALv2.
-   Justification:
-     ASF infra is using this so we should maintain it.
-     Stuff in contrib/ isn't officially maintained.
-   Notes:
-     r1207555: Perform the move (from r1207550) and relicense
-     r1207808: Enable building mod_dontdothat from our standard make scripts.
-   Votes:
-     +1: rhuijben, stsp
-
- * r1150344, r1158923, r1158929, r1166267, r1206576, r1206718, r1206719,
-   r1206724, r1206741, r1207656, r1207663, r1207823
-   Fix issues #3814, and #3991, and other EOL-handling problems in patch.
-   Justification:
-     svn patch is broken for file content and property values not terminated
-     with EOL, and for patches not terminated with EOL.
-     Fixes requested on users@:
-     http://svn.haxx.se/users/archive-2011-11/0513.shtml
-     http://svn.haxx.se/users/archive-2011-11/0523.shtml
-   Notes:
-     r1150344: Merged to avoid conflicts in diff parsing test.
-     r1158923: Adds a cmdline regression test for issue #3991.
-     r1158929: Adds a new C diff parsing regression test for issue #3991.
-     r1166267: Merged to prevent conflicts in diff_tests.py.
-     r1206576: Tweak 'svn diff' output for prop values not terminated with EOL.
-     r1206718: Fix issue #3814.
-     r1206719: Follow-up fix for JavaHL tests.
-     r1206724: Fix issue #3991.
-     r1206741: Fixes the #3991 C diff parsing test to make it PASS.
-     r1206748: Remove an obsolete comment.
-     r1207656: Fix a pointer dereference bug from r1206718.
-     r1207663: Fix handling of '\ No newline ...' comments within hunk text.
-     r1207823: Fixes spurious test failures.
-   Branch:
-     ^/subversion/branches/1.7.x-svn-patch-eol-fixes
-   Votes:
-     +1: stsp, philip
-
- * r1220783
-   Fix mis-ordered text output of 'svn log --diff' on Windows.
-   Justification:
-     Badness within 'svn', fixed within 'svn'. Needed for r1210147 group.
-   Votes:
-     +1: julianfoad
-
  * r1210147, r1202132, r1202333, r1220740
    Fix the 'svn log --diff' code so that it correctly shows a diff of a
    target file (or directory) that was at a different path in the past.
@@ -89,62 +31,73 @@ Candidate changes:
    Branch:
      ^/subversion/branches/1.7.x-r1210147
    Notes:
-    Depends on the r1220783 bug fix, otherwise the test will fail on Windows.
+    I previously said this (r1220740 specifically) depended on r1220783 to
+    make the test pass on Windows, but it doesn't here; on trunk it does.
     r1210147 is the actual fix.
     r1202132 and r1202333 were merged for conflict resolution. These revisions
     depend on the issue #2873 fix which has been backported in 1.7.2
     r1220740 expands the test so that it would fail without r1210147 applied.
    Votes:
-     +1: stsp (without r1220740)
+     +1: stsp (without r1220740 -- r1220740 depends on r1220783 which
+               in turn needs new-in-1.8 APIs. Are there test failures
+               on Windows without it that cannot be fixed some other way?)
+              (The back-port of r1220740 doesn't have that dependency. -- JAF)
      +1: julianfoad
 
- * r1154121, r1195480, r1208840, r1209631, r1209654, r1212476, r1212482,
-   r1212484
-   Update and clarify the merge help text.
-   Justification:
-     Merge usage questions are very frequently asked questions in #svn IRC and
-     on the users@ list. We should improve the documentation whenever we can
-     and point people to it.
+ * r1235831, r1236099
+   Tweak the parsing of the ssl-authority-files config option to make it
+   easier for users to configure.
+   Justification:
+     Low impact change to help users.
    Notes:
-     Merge with --accept=theirs-conflict
+     Both r1235831 and r1236099 conflict and will need a branch.
    Votes:
-     +1: stsp, philip
+     +1: gstein, rhuijben
 
- * r1215260, r1215288, r1215374, r1215375, r1215379
-   Fix issue #4082 ("'svn log --with-all-revprops' over ra-dav
-   intolerant of XML-unsafe property values").
-   Justification:
-     'Tis better to succeed than to fail.  Unless of course you're
-     talking about successfully doing evil, in which case 'tis better
-     to fail.  But we're not talking about doing evil here.  Unless
-     you think XML is evil.  But seriously, these commits introduce a
-     protocol change for WebDAV.  I suspect that might disqualify it
-     in some folks' eyes from backport to a patch release rather
-     automatically.  But the protocol change is (as all our other
-     protocol changes are) designed to maintain compatibility across
-     client and server versions.  If the client advertises support for
-     the new behavior, and the server has such support, the bugfix
-     logic is activitated.  A patched client will not trouble an
-     unpatched server; nor vice-versa.  Further, the effects of the
-     corrected behavior do not persist, so there's no dataset damage
-     imposed for users who would roll this change back out of their
-     systems (by reverting to a prior release).  Therefore, cmpilato
-     can't think of a good reason not to backport the change.
+ * r1238121
+   Fix incorrect url construction in libsvn_ra_serf when svn_ra_get_dir2() is
+   called against a HTTPv2 server with a SVN_INVALID_REVNUM revision.
+   Justification:
+     Privately reported as AnkhSVN issue.
+   Votes:
+     +1: rhuijben, philip
+
+ * r1200277, r1243694, r1243840, r1243920, r1244466, r1244551
+   Workaround for issue #4087, "bogus repos_id in wc.db for file externals"
+   Justification:
+     Regression from 1.6. Some repositories with file externals cannot be
+     checked out with 1.7. Users complained.
+     See http://svn.haxx.se/users/archive-2011-12/0299.shtml
+   Branch:
+     ^/subversion/branches/1.7.x-issue4087
    Notes:
-     r1215260 - mod_dav_svn support for this issue
-     r1215288 - libsvn_ra_neon support for this issue
-     r1215374 - followup to r1215288
-     r1215375 - libsvn_ra_serf support for this issue
-     r1215379 - followup to r1215375
+     r1200277 was merged to simplify conflict resolution
+     r1243694 implements the workaround
+     r1243840 is a cosmetic follow-up treak
+     r1243920 was merged for conflict resolution for r1244466
+     r1244466 eliminates an unneccesary RA round-trip from r1243694
+     r1244551 uses a better API to query the local repos root and uuid
    Votes:
-     +1: cmpilato
+     +1: stsp
 
- * r1220742, r1220750
-   Fix spurious testsuite FAIL
+ * r1243976
+   On Windows, don't try to build mod_dontdothat if building without httpd.
    Justification:
-     We don't expect users to ignore tests that FAIL.
+     Regression in 1.7.2 where we added mod_dontdothat to the buildscripts
+     on Windows.
    Votes:
-     +1: philip, rhuijben
+     +1: rhuijben, ivan
+
+ * r1244303, r1244317, r1245284, r1245285
+   Fix issue #4052, "merge tree-conflicts deleted symbolic links".
+   Justification:
+     Regression from 1.6.
+     Users complained: http://mail-archives.apache.org/mod_mbox/subversion-users/201202.mbox/%3C36358219FB198140A2CD558823C1A57805374260%40NZURC101PEX1.ubsw.net%3E
+   Notes:
+     r1244303 and r1244317 add a test.
+     r1245284 and r1245285 implement a fix.
+   Votes:
+     +1: stsp
 
 Veto-blocked changes:
 =====================
@@ -168,5 +121,14 @@ Veto-blocked changes:
          (without r1161164, r1161180)
      -1: danielsh (invasive, new feature)
 
+ * r1221463
+   Allow leading "r" in ?p= query string arguments.
+   Justification:
+     Same as for allowing '-r r42' in svn(1).
+   Votes:
+     -0: rhuijben (Behavior change without positive votes? 1.8?)
+     -1: cmpilato (a rollback to an earlier patch release would break any
+                   bookmarks saved for URLs using the new syntax)
+
 Approved changes:
 =================

Modified: subversion/branches/1.7.x-r1210147/build.conf
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/build.conf?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/build.conf (original)
+++ subversion/branches/1.7.x-r1210147/build.conf Fri Feb 17 10:52:38 2012
@@ -361,6 +361,15 @@ libs = libsvn_repos libsvn_subr
 install = apache-mod
 msvc-libs = libhttpd.lib
 
+[mod_dontdothat]
+description = Apache Httpd module to block certain kinds of Apache Subversion requests
+type = apache-mod
+path = tools/server-side/mod_dontdothat
+nonlibs = mod_dav_svn apr aprutil
+libs = libsvn_subr xml
+install = apache-mod
+msvc-libs = libhttpd.lib
+
 # ----------------------------------------------------------------------------
 #
 # CONSTRUCTED HEADERS
@@ -1104,7 +1113,7 @@ type = project
 path = build/win32
 libs = svn svnadmin svndumpfilter svnlook svnmucc svnserve svnrdump svnsync
        svnversion
-       mod_authz_svn mod_dav_svn
+       mod_authz_svn mod_dav_svn mod_dontdothat
        svnauthz-validate svnraisetreeconflict
 
 [__ALL_TESTS__]

Modified: subversion/branches/1.7.x-r1210147/notes/api-errata/1.7/ra001.txt
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/notes/api-errata/1.7/ra001.txt?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/notes/api-errata/1.7/ra001.txt (original)
+++ subversion/branches/1.7.x-r1210147/notes/api-errata/1.7/ra001.txt Fri Feb 17 10:52:38 2012
@@ -3,7 +3,7 @@ API ERRATA -- $Id$
 Root Cause of Errata: 
  Library(s) Affected: libsvn_ra, RA servers (svnserve, mod_dav_svn)
 Function(s) Affected: svn_delta_editor_t
-     New Behavior in: 1.7 (default), 1.4 (client optional)
+     New Behavior in: 1.8 (default), 1.4 (client optional)
       Related Issues: #2932, #3628
 
 

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java Fri Feb 17 10:52:38 2012
@@ -541,7 +541,10 @@ public class ClientNotifyInformation ext
         failed_locked ("failed by lock"),
 
         /** Operation failed because the operation was forbidden */
-        failed_forbidden_by_server ("failed forbidden by server");
+        failed_forbidden_by_server ("failed forbidden by server"),
+
+        /** Operation skipped the path because it was conflicted */
+        skip_conflicted ("skipped conflicted path");
 
         /**
          * The description of the action.

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Fri Feb 17 10:52:38 2012
@@ -2736,7 +2736,7 @@ public class BasicTests extends SVNTests
             "## -0,0 +1 ##" + NL +
             "+Test property value." + NL;
 
-        setprop(aPath, "testprop", "Test property value.");
+        setprop(aPath, "testprop", "Test property value." + NL);
         client.diff(aPath, Revision.BASE, aPath, Revision.WORKING, wcPath,
                     diffOutput.getPath(), Depth.infinity, null, true, true,
                     false, false);
@@ -2754,7 +2754,7 @@ public class BasicTests extends SVNTests
             "## -0,0 +1 ##" + NL +
             "+Test property value." + NL;
 
-        setprop(aPath, "testprop", "Test property value.");
+        setprop(aPath, "testprop", "Test property value." + NL);
         client.diff(aPath, Revision.BASE, aPath, Revision.WORKING, aPath,
                     diffOutput.getPath(), Depth.infinity, null, true, true,
                     false, false);

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java Fri Feb 17 10:52:38 2012
@@ -2674,7 +2674,8 @@ public class BasicTests extends SVNTests
             "## -0,0 +1 ##" + NL +
             "+Test property value." + NL;
 
-        client.propertySet(aPath, "testprop", "Test property value.", false);
+        client.propertySet(aPath, "testprop", "Test property value." + NL,
+                           false);
         client.diff(aPath, Revision.BASE, aPath, Revision.WORKING, wcPath,
                     diffOutput.getPath(), Depth.infinity, null, true, true,
                     false);
@@ -2692,7 +2693,8 @@ public class BasicTests extends SVNTests
             "## -0,0 +1 ##" + NL +
             "+Test property value." + NL;
 
-        client.propertySet(aPath, "testprop", "Test property value.", false);
+        client.propertySet(aPath, "testprop", "Test property value." + NL,
+                           false);
         client.diff(aPath, Revision.BASE, aPath, Revision.WORKING, aPath,
                     diffOutput.getPath(), Depth.infinity, null, true, true,
                     false);

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/include/svn_containers.swg
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/include/svn_containers.swg?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/include/svn_containers.swg (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/include/svn_containers.swg Fri Feb 17 10:52:38 2012
@@ -825,8 +825,8 @@
 #ifdef SWIGPYTHON
 %typemap(argout) apr_array_header_t **RANGELIST {
   %append_output
-    (svn_swig_py_rangelist_to_list(*$1, $descriptor(svn_merge_range_t *),
-                                   _global_py_pool));
+    (svn_swig_py_pointerlist_to_list(*$1, $descriptor(svn_merge_range_t *),
+                                     _global_py_pool));
   if (PyErr_Occurred()) {
     SWIG_fail;
   }
@@ -873,3 +873,20 @@
                     $descriptor(svn_auth_provider_object_t *)));
 }
 #endif
+
+#ifdef SWIGPYTHON
+%typemap(argout) apr_array_header_t **providers {
+  %append_output
+    (svn_swig_py_pointerlist_to_list(*$1, $descriptor(svn_auth_provider_object_t *),
+                                     _global_py_pool));
+  if (PyErr_Occurred()) {
+    SWIG_fail;
+  }
+}
+#endif
+
+#ifdef SWIGRUBY
+%typemap(argout) apr_array_header_t **providers {
+  %append_output(svn_swig_rb_apr_array_to_array_auth_provider_object(*$1));
+}
+#endif

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c Fri Feb 17 10:52:38 2012
@@ -650,17 +650,29 @@ PyObject *svn_swig_py_stringhash_to_dict
   return convert_hash(hash, convert_string, NULL, NULL);
 }
 
-static PyObject *convert_rangelist(void *value, void *ctx, PyObject *py_pool)
+static PyObject *convert_pointerlist(void *value, void *ctx, PyObject *py_pool)
 {
   int i;
   PyObject *list;
   apr_array_header_t *array = value;
 
   list = PyList_New(0);
+  if (list == NULL)
+    return NULL;
+
   for (i = 0; i < array->nelts; i++)
     {
-      svn_merge_range_t *range = APR_ARRAY_IDX(array, i, svn_merge_range_t *);
-      if (PyList_Append(list, convert_to_swigtype(range, ctx, py_pool)) == -1)
+      void *ptr = APR_ARRAY_IDX(array, i, void *);
+      PyObject *obj;
+      int result;
+
+      obj = convert_to_swigtype(ptr, ctx, py_pool);
+      if (obj == NULL)
+        goto error;
+
+      result = PyList_Append(list, obj);
+      Py_DECREF(obj);
+      if (result == -1)
         goto error;
     }
   return list;
@@ -669,18 +681,18 @@ static PyObject *convert_rangelist(void 
   return NULL;
 }
 
-PyObject *svn_swig_py_rangelist_to_list(apr_array_header_t *rangelist,
-                                        swig_type_info *type,
-                                        PyObject *py_pool)
+PyObject *svn_swig_py_pointerlist_to_list(apr_array_header_t *list,
+                                          swig_type_info *type,
+                                          PyObject *py_pool)
 {
-  return convert_rangelist(rangelist, type, py_pool);
+  return convert_pointerlist(list, type, py_pool);
 }
 
 PyObject *svn_swig_py_mergeinfo_to_dict(apr_hash_t *hash,
                                         swig_type_info *type,
                                         PyObject *py_pool)
 {
-  return convert_hash(hash, convert_rangelist, type, py_pool);
+  return convert_hash(hash, convert_pointerlist, type, py_pool);
 }
 
 static PyObject *convert_mergeinfo_hash(void *value, void *ctx,

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h Fri Feb 17 10:52:38 2012
@@ -135,9 +135,9 @@ PyObject *svn_swig_py_locationhash_to_di
 /* helper function to convert an apr_array_header_t* (of
    svn_merge_range_t *) to a Python list */
 SVN_SWIG_SWIGUTIL_EXPORT
-PyObject *svn_swig_py_rangelist_to_list(apr_array_header_t *rangelist,
-                                        swig_type_info *type,
-                                        PyObject *py_pool);
+PyObject *svn_swig_py_pointerlist_to_list(apr_array_header_t *list,
+                                          swig_type_info *type,
+                                          PyObject *py_pool);
 
 /* helper function to convert an apr_hash_t* (const char *->array of
    svn_merge_range_t *) to a Python dict */

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/client.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/client.py?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/client.py (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/client.py Fri Feb 17 10:52:38 2012
@@ -374,6 +374,14 @@ class SubversionClientTestCase(unittest.
 
     self.assertEqual(readme_text, 'This is a test.\n')
 
+  def test_platform_providers(self):
+    providers = core.svn_auth_get_platform_specific_client_providers(None, None)
+    # Not much more we can test in this minimal environment.
+    self.assert_(isinstance(providers, list))
+    self.assert_(not filter(lambda x:
+                             not isinstance(x, core.svn_auth_provider_object_t),
+                            providers))
+
 def suite():
     return unittest.defaultTestLoader.loadTestsFromTestCase(
       SubversionClientTestCase)

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/mergeinfo.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/mergeinfo.py?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/mergeinfo.py (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/python/tests/mergeinfo.py Fri Feb 17 10:52:38 2012
@@ -18,7 +18,7 @@
 # under the License.
 #
 #
-import unittest, os
+import unittest, os, sys, gc
 from svn import core, repos, fs
 import utils
 
@@ -29,6 +29,15 @@ class RevRange:
     self.start = start
     self.end = end
 
+def get_svn_merge_range_t_objects():
+  """Returns a list 'svn_merge_range_t' objects being tracked by the
+     garbage collector, used for detecting memory leaks."""
+  return [
+    o for o in gc.get_objects()
+      if hasattr(o, '__class__') and
+        o.__class__.__name__ == 'svn_merge_range_t'
+  ]
+
 class SubversionMergeinfoTestCase(unittest.TestCase):
   """Test cases for mergeinfo"""
 
@@ -116,6 +125,53 @@ class SubversionMergeinfoTestCase(unitte
       }
     self.compare_mergeinfo_catalogs(mergeinfo, expected_mergeinfo)
 
+  def test_mergeinfo_leakage__incorrect_range_t_refcounts(self):
+    """Ensure that the ref counts on svn_merge_range_t objects returned by
+       svn_mergeinfo_parse() are correct."""
+    # When reference counting is working properly, each svn_merge_range_t in
+    # the returned mergeinfo will have a ref count of 1...
+    mergeinfo = core.svn_mergeinfo_parse(self.TEXT_MERGEINFO1)
+    for (path, rangelist) in mergeinfo.items():
+      # ....and now 2 (incref during iteration of rangelist)
+
+      for (i, r) in enumerate(rangelist):
+        # ....and now 3 (incref during iteration of each range object)
+
+        refcount = sys.getrefcount(r)
+        # ....and finally, 4 (getrefcount() also increfs)
+        expected = 4
+
+        # Note: if path and index are not '/trunk' and 0 respectively, then
+        # only some of the range objects are leaking, which is, as far as
+        # leaks go, even more impressive.
+        self.assertEquals(refcount, expected, (
+          "Memory leak!  Expected a ref count of %d for svn_merge_range_t "
+          "object, but got %d instead (path: %s, index: %d).  Probable "
+          "cause: incorrect Py_INCREF/Py_DECREF usage in libsvn_swig_py/"
+          "swigutil_py.c." % (expected, refcount, path, i)))
+
+    del mergeinfo
+    gc.collect()
+
+  def test_mergeinfo_leakage__lingering_range_t_objects_after_del(self):
+    """Ensure that there are no svn_merge_range_t objects being tracked by
+       the garbage collector after we explicitly `del` the results returned
+       by svn_mergeinfo_parse().  We call gc.collect() to force an explicit
+       garbage collection cycle after the `del`;
+       if our reference counts are correct, the allocated svn_merge_range_t
+       objects will be garbage collected and thus, not appear in the list of
+       objects returned by gc.get_objects()."""
+    mergeinfo = core.svn_mergeinfo_parse(self.TEXT_MERGEINFO1)
+    del mergeinfo
+    gc.collect()
+    lingering = get_svn_merge_range_t_objects()
+    self.assertEquals(lingering, list(), (
+      "Memory leak!  Found lingering svn_merge_range_t objects left over from "
+      "our call to svn_mergeinfo_parse(), even though we explicitly deleted "
+      "the returned mergeinfo object.  Probable cause: incorrect Py_INCREF/"
+      "Py_DECREF usage in libsvn_swig_py/swigutil_py.c.  Lingering objects:\n"
+      "%s" % lingering))
+
   def inspect_mergeinfo_dict(self, mergeinfo, merge_source, nbr_rev_ranges):
     rangelist = mergeinfo.get(merge_source)
     self.inspect_rangelist_tuple(rangelist, nbr_rev_ranges)

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c Fri Feb 17 10:52:38 2012
@@ -1313,6 +1313,9 @@ DEFINE_APR_ARRAY_TO_ARRAY(VALUE, svn_swi
 DEFINE_APR_ARRAY_TO_ARRAY(VALUE, svn_swig_rb_apr_array_to_array_merge_range,
                           c2r_merge_range_dup, EMPTY_CPP_ARGUMENT,
                           svn_merge_range_t *, NULL)
+DEFINE_APR_ARRAY_TO_ARRAY(VALUE, svn_swig_rb_apr_array_to_array_auth_provider_object,
+                          c2r_swig_type, EMPTY_CPP_ARGUMENT,
+                          svn_auth_provider_object_t *, "svn_auth_provider_object_t*")
 
 static VALUE
 c2r_merge_range_array(void *value, void *ctx)

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h Fri Feb 17 10:52:38 2012
@@ -154,6 +154,8 @@ SVN_RB_SWIG_SWIGUTIL_EXPORT
 VALUE svn_swig_rb_apr_array_to_array_external_item2(const apr_array_header_t *ary);
 SVN_RB_SWIG_SWIGUTIL_EXPORT
 VALUE svn_swig_rb_apr_array_to_array_merge_range(const apr_array_header_t *ary);
+SVN_RB_SWIG_SWIGUTIL_EXPORT
+VALUE svn_swig_rb_apr_array_to_array_auth_provider_object(const apr_array_header_t *ary);
 
 SVN_RB_SWIG_SWIGUTIL_EXPORT
 VALUE svn_swig_rb_prop_apr_array_to_hash_prop(const apr_array_header_t *ary);

Modified: subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/svn/core.rb
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/svn/core.rb?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/svn/core.rb (original)
+++ subversion/branches/1.7.x-r1210147/subversion/bindings/swig/ruby/svn/core.rb Fri Feb 17 10:52:38 2012
@@ -279,6 +279,10 @@ module Svn
         add_prompt_provider("ssl_client_cert_pw", args, prompt, klass)
       end
 
+      def add_platform_specific_client_providers(config=nil)
+        add_providers(Core.auth_get_platform_specific_client_providers(config))
+      end
+
       private
       def add_prompt_provider(name, args, prompt, credential_class)
         real_prompt = Proc.new do |*prompt_args|
@@ -294,6 +298,10 @@ module Svn
       end
 
       def add_provider(provider)
+        add_providers([provider])
+      end
+
+      def add_providers(new_providers)
         if auth_baton
           providers = auth_baton.providers
           parameters = auth_baton.parameters
@@ -301,7 +309,7 @@ module Svn
           providers = []
           parameters = {}
         end
-        self.auth_baton = AuthBaton.new(providers + [provider], parameters)
+        self.auth_baton = AuthBaton.new(providers + new_providers, parameters)
       end
     end
 

Modified: subversion/branches/1.7.x-r1210147/subversion/include/private/svn_wc_private.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/include/private/svn_wc_private.h?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/include/private/svn_wc_private.h (original)
+++ subversion/branches/1.7.x-r1210147/subversion/include/private/svn_wc_private.h Fri Feb 17 10:52:38 2012
@@ -419,6 +419,12 @@ svn_wc__node_get_url(const char **url,
  * If not NULL, sets @a revision, @a repos_relpath, @a repos_root_url and
  * @a repos_uuid to the original (if a copy) or their current values.
  *
+ * If @a copy_root_abspath is not NULL, and @a *is_copy indicates that the
+ * node was copied, set @a *copy_root_abspath to the local absolute path of
+ * the root of the copied subtree containing the node. If the copied node is
+ * a root by itself, @a *copy_root_abspath will match @a local_abspath (but
+ * won't necessarily point to the same string in memory).
+ *
  * If @a scan_deleted is TRUE, determine the origin of the deleted node. If
  * @a scan_deleted is FALSE, return NULL, SVN_INVALID_REVNUM or FALSE for
  * deleted nodes.
@@ -431,6 +437,7 @@ svn_wc__node_get_origin(svn_boolean_t *i
                         const char **repos_relpath,
                         const char **repos_root_url,
                         const char **repos_uuid,
+                        const char **copy_root_abspath,
                         svn_wc_context_t *wc_ctx,
                         const char *local_abspath,
                         svn_boolean_t scan_deleted,

Modified: subversion/branches/1.7.x-r1210147/subversion/include/svn_version.h
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/include/svn_version.h?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/include/svn_version.h (original)
+++ subversion/branches/1.7.x-r1210147/subversion/include/svn_version.h Fri Feb 17 10:52:38 2012
@@ -71,7 +71,7 @@ extern "C" {
  *
  * @since New in 1.1.
  */
-#define SVN_VER_PATCH      3
+#define SVN_VER_PATCH      4
 
 
 /** @deprecated Provided for backward compatibility with the 1.0 API. */

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/commit_util.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/commit_util.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/commit_util.c Fri Feb 17 10:52:38 2012
@@ -410,6 +410,10 @@ bail_on_tree_conflicted_ancestor(svn_wc_
    when harvesting committables; that is, don't add a path to
    COMMITTABLES unless it's a member of one of those changelists.
 
+   DANGLERS is a hash table mapping const char* absolute paths of a parent
+   to a const char * absolute path of a child. See the comment about
+   danglers at the top of svn_client__harvest_committables().
+
    If CANCEL_FUNC is non-null, call it with CANCEL_BATON to see
    if the user has cancelled the operation.
 
@@ -428,6 +432,7 @@ harvest_committables(svn_wc_context_t *w
                      apr_hash_t *changelists,
                      svn_boolean_t skip_files,
                      svn_boolean_t skip_dirs,
+                     apr_hash_t *danglers,
                      svn_client__check_url_kind_t check_url_func,
                      void *check_url_baton,
                      svn_cancel_func_t cancel_func,
@@ -606,7 +611,7 @@ harvest_committables(svn_wc_context_t *w
 
           /* Determine from what parent we would be the deleted child */
           SVN_ERR(svn_wc__node_get_origin(NULL, &revision, &repos_relpath,
-                                          NULL, NULL, wc_ctx,
+                                          NULL, NULL, NULL, wc_ctx,
                                           svn_dirent_dirname(local_abspath,
                                                              scratch_pool),
                                           FALSE, scratch_pool, scratch_pool));
@@ -663,7 +668,7 @@ harvest_committables(svn_wc_context_t *w
 
           SVN_ERR(svn_wc__node_get_origin(NULL, &cf_rev,
                                       &cf_relpath, NULL,
-                                      NULL,
+                                      NULL, NULL,
                                       wc_ctx, local_abspath, FALSE,
                                       scratch_pool, scratch_pool));
 
@@ -793,6 +798,45 @@ harvest_committables(svn_wc_context_t *w
         }
     }
 
+  /* Make sure we check for dangling children on additions */
+  if (state_flags && is_added && danglers)
+    {
+      /* If a node is added, it's parent must exist in the repository at the
+         time of committing */
+
+      svn_boolean_t parent_added;
+      const char *parent_abspath = svn_dirent_dirname(local_abspath,
+                                                      scratch_pool);
+
+      SVN_ERR(svn_wc__node_is_added(&parent_added, wc_ctx, parent_abspath,
+                                    scratch_pool));
+
+      if (parent_added)
+        {
+          const char *copy_root_abspath;
+          svn_boolean_t parent_is_copy;
+
+          /* The parent is added, so either it is a copy, or a locally added
+           * directory. In either case, we require the op-root of the parent
+           * to be part of the commit. See issue #4059. */
+          SVN_ERR(svn_wc__node_get_origin(&parent_is_copy, NULL, NULL, NULL,
+                                          NULL, &copy_root_abspath,
+                                          wc_ctx, parent_abspath,
+                                          FALSE, scratch_pool, scratch_pool));
+
+          if (parent_is_copy)
+            parent_abspath = copy_root_abspath;
+
+          if (!apr_hash_get(danglers, parent_abspath, APR_HASH_KEY_STRING))
+            {
+              apr_hash_set(danglers,
+                           apr_pstrdup(result_pool, parent_abspath),
+                           APR_HASH_KEY_STRING,
+                           apr_pstrdup(result_pool, local_abspath));
+            }
+        }
+    }
+
   if (db_kind != svn_node_dir || depth <= svn_depth_empty)
     return SVN_NO_ERROR;
 
@@ -841,6 +885,7 @@ harvest_committables(svn_wc_context_t *w
                                        changelists,
                                        (depth < svn_depth_files),
                                        (depth < svn_depth_immediates),
+                                       NULL, /* danglers */
                                        check_url_func, check_url_baton,
                                        cancel_func, cancel_baton,
                                        notify_func, notify_baton,
@@ -1010,13 +1055,13 @@ svn_client__harvest_committables(svn_cli
    * Since we don't know what's included in the commit until we've
    * harvested all the targets, we can't reliably check this as we
    * go.  So in `danglers', we record named targets whose parents
-   * are unversioned, then after harvesting the total commit group, we
-   * check to make sure those parents are included.
+   * do not yet exist in the repository. Then after harvesting the total
+   * commit group, we check to make sure those parents are included.
    *
-   * Each key of danglers is an unversioned parent.  The (const char *)
-   * value is one of that parent's children which is named as part of
-   * the commit; the child is included only to make a better error
-   * message.
+   * Each key of danglers is a parent which does not exist in the
+   * repository.  The (const char *) value is one of that parent's
+   * children which is named as part of the commit; the child is
+   * included only to make a better error message.
    *
    * (The reason we don't bother to check unnamed -- i.e, implicit --
    * targets is that they can only join the commit if their parents
@@ -1041,10 +1086,8 @@ svn_client__harvest_committables(svn_cli
   for (i = 0; i < targets->nelts; ++i)
     {
       const char *target_abspath;
-      svn_boolean_t is_added;
       svn_node_kind_t kind;
       const char *repos_root_url;
-      svn_error_t *err;
 
       svn_pool_clear(iterpool);
 
@@ -1081,35 +1124,6 @@ svn_client__harvest_committables(svn_cli
                                           target_abspath,
                                           result_pool, iterpool));
 
-      /* Handle an added/replaced node. */
-      SVN_ERR(svn_wc__node_is_added(&is_added, ctx->wc_ctx, target_abspath,
-                                    iterpool));
-      if (is_added)
-        {
-          /* This node is added. Is the parent also added? */
-          const char *parent_abspath = svn_dirent_dirname(target_abspath,
-                                                          iterpool);
-          err = svn_wc__node_is_added(&is_added, ctx->wc_ctx, parent_abspath,
-                                      iterpool);
-          if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
-            return svn_error_createf(
-                SVN_ERR_WC_CORRUPT, err,
-                _("'%s' is scheduled for addition within unversioned parent"),
-                svn_dirent_local_style(target_abspath, iterpool));
-          SVN_ERR(err);
-
-          if (is_added)
-            {
-              /* Copy the parent and target into pool; iterpool
-                 lasts only for this loop iteration, and we check
-                 danglers after the loop is over. */
-              apr_hash_set(danglers,
-                           apr_pstrdup(scratch_pool, parent_abspath),
-                           APR_HASH_KEY_STRING,
-                           apr_pstrdup(scratch_pool, target_abspath));
-            }
-        }
-
       /* Handle our TARGET. */
       /* Make sure this isn't inside a working copy subtree that is
        * marked as tree-conflicted. */
@@ -1125,6 +1139,7 @@ svn_client__harvest_committables(svn_cli
                                    FALSE /* COPY_MODE_ROOT */,
                                    depth, just_locked, changelist_hash,
                                    FALSE, FALSE,
+                                   danglers,
                                    check_url_func, check_url_baton,
                                    ctx->cancel_func, ctx->cancel_baton,
                                    ctx->notify_func2, ctx->notify_baton2,
@@ -1147,31 +1162,31 @@ svn_client__harvest_committables(svn_cli
 
       svn_pool_clear(iterpool);
 
-       if (! look_up_committable(*committables, dangling_parent, iterpool))
-         {
-           const char *dangling_child = svn__apr_hash_index_val(hi);
-
-           if (ctx->notify_func2 != NULL)
-             {
-               svn_wc_notify_t *notify;
-
-               notify = svn_wc_create_notify(dangling_child,
-                                             svn_wc_notify_failed_no_parent,
-                                             scratch_pool);
-
-               ctx->notify_func2(ctx->notify_baton2, notify, iterpool);
-             }
-
-           return svn_error_createf(
-                            SVN_ERR_ILLEGAL_TARGET, NULL,
-                            _("'%s' is not under version control "
-                              "and is not part of the commit, "
-                              "yet its child '%s' is part of the commit"),
-                            /* Probably one or both of these is an entry, but
-                               safest to local_stylize just in case. */
-                            svn_dirent_local_style(dangling_parent, iterpool),
-                            svn_dirent_local_style(dangling_child, iterpool));
-         }
+      if (! look_up_committable(*committables, dangling_parent, iterpool))
+        {
+          const char *dangling_child = svn__apr_hash_index_val(hi);
+
+          if (ctx->notify_func2 != NULL)
+            {
+              svn_wc_notify_t *notify;
+
+              notify = svn_wc_create_notify(dangling_child,
+                                            svn_wc_notify_failed_no_parent,
+                                            scratch_pool);
+
+              ctx->notify_func2(ctx->notify_baton2, notify, iterpool);
+            }
+
+          return svn_error_createf(
+                           SVN_ERR_ILLEGAL_TARGET, NULL,
+                           _("'%s' is not known to exist in the repository "
+                             "and is not part of the commit, "
+                             "yet its child '%s' is part of the commit"),
+                           /* Probably one or both of these is an entry, but
+                              safest to local_stylize just in case. */
+                           svn_dirent_local_style(dangling_parent, iterpool),
+                           svn_dirent_local_style(dangling_child, iterpool));
+        }
     }
 
   svn_pool_destroy(iterpool);
@@ -1218,6 +1233,7 @@ harvest_copy_committables(void *baton, v
                                FALSE,  /* JUST_LOCKED */
                                NULL,
                                FALSE, FALSE, /* skip files, dirs */
+                               NULL,
                                btn->check_url_func,
                                btn->check_url_baton,
                                btn->ctx->cancel_func,

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/copy.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/copy.c Fri Feb 17 10:52:38 2012
@@ -98,7 +98,7 @@ calculate_target_mergeinfo(svn_ra_sessio
 
       SVN_ERR(svn_wc__node_get_origin(NULL, &src_revnum,
                                       &repos_relpath, &repos_root_url,
-                                      NULL,
+                                      NULL, NULL,
                                       ctx->wc_ctx, local_abspath, FALSE,
                                       pool, pool));
 
@@ -2206,7 +2206,7 @@ try_copy(const apr_array_header_t *sourc
                   SVN_ERR(svn_wc__node_get_origin(NULL, &copyfrom_rev,
                                                   &copyfrom_repos_relpath,
                                                   &copyfrom_repos_root_url,
-                                                  NULL,
+                                                  NULL, NULL,
                                                   ctx->wc_ctx,
                                                   pair->src_abspath_or_url,
                                                   TRUE, iterpool, iterpool));

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/diff.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/diff.c Fri Feb 17 10:52:38 2012
@@ -166,18 +166,25 @@ display_mergeinfo_diff(const char *old_m
    If TOKEN is empty, or is already terminated by an EOL marker,
    return TOKEN unmodified. Else, return a new string consisting
    of the concatenation of TOKEN and the system's default EOL marker.
-   The new string is allocated from POOL. */
+   The new string is allocated from POOL.
+   If HAD_EOL is not NULL, indicate in *HAD_EOL if the token had a EOL. */
 static const svn_string_t *
-maybe_append_eol(const svn_string_t *token, apr_pool_t *pool)
+maybe_append_eol(const svn_string_t *token, svn_boolean_t *had_eol,
+                 apr_pool_t *pool)
 {
   const char *curp;
 
+  if (had_eol)
+    *had_eol = FALSE;
+
   if (token->len == 0)
     return token;
 
   curp = token->data + token->len - 1;
   if (*curp == '\r')
     {
+      if (had_eol)
+        *had_eol = TRUE;
       return token;
     }
   else if (*curp != '\n')
@@ -186,6 +193,8 @@ maybe_append_eol(const svn_string_t *tok
     }
   else
     {
+      if (had_eol)
+        *had_eol = TRUE;
       return token;
     }
 }
@@ -683,17 +692,18 @@ display_prop_diffs(const apr_array_heade
         const svn_string_t *tmp;
         const svn_string_t *orig;
         const svn_string_t *val;
+        svn_boolean_t val_has_eol;
 
         /* The last character in a property is often not a newline.
-           Since the diff is not useful anyway for patching properties an
-           eol character is appended when needed to remove those pescious
-           ' \ No newline at end of file' lines. */
+           An eol character is appended to prevent the diff API to add a
+           ' \ No newline at end of file' line. We add 
+           ' \ No newline at end of property' manually if needed. */
         tmp = original_value ? original_value : svn_string_create("", pool);
-        orig = maybe_append_eol(tmp, pool);
+        orig = maybe_append_eol(tmp, NULL, pool);
 
         tmp = propchange->value ? propchange->value :
                                   svn_string_create("", pool);
-        val = maybe_append_eol(tmp, pool);
+        val = maybe_append_eol(tmp, &val_has_eol, pool);
 
         SVN_ERR(svn_diff_mem_string_diff(&diff, orig, val, &options, pool));
 
@@ -709,7 +719,12 @@ display_prop_diffs(const apr_array_heade
                                            svn_dirent_local_style(path, pool),
                                            encoding, orig, val, pool));
         SVN_ERR(svn_stream_close(os));
-
+        if (!val_has_eol)
+          {
+            const char *s = "\\ No newline at end of property" APR_EOL_STR;
+            apr_size_t len = strlen(s);
+            SVN_ERR(svn_stream_write(os, s, &len));
+          }
       }
     }
 

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/export.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/export.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/export.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/export.c Fri Feb 17 10:52:38 2012
@@ -402,7 +402,7 @@ copy_versioned_files(const char *from_ab
       const char *repos_relpath;
 
       SVN_ERR(svn_wc__node_get_origin(&is_added, NULL, &repos_relpath,
-                                      NULL, NULL,
+                                      NULL, NULL, NULL,
                                       ctx->wc_ctx, from_abspath, FALSE,
                                       pool, pool));
 

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/externals.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/externals.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/externals.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/externals.c Fri Feb 17 10:52:38 2012
@@ -126,8 +126,8 @@ relegate_dir_external(svn_wc_context_t *
 static svn_error_t *
 switch_dir_external(const char *local_abspath,
                     const char *url,
-                    const svn_opt_revision_t *revision,
                     const svn_opt_revision_t *peg_revision,
+                    const svn_opt_revision_t *revision,
                     const char *defining_abspath,
                     svn_boolean_t *timestamp_sleep,
                     svn_client_ctx_t *ctx,
@@ -940,8 +940,8 @@ handle_external_item_change(const struct
         {
         case svn_node_dir:
           SVN_ERR(switch_dir_external(local_abspath, new_url,
-                                      &(new_item->revision),
                                       &(new_item->peg_revision),
+                                      &(new_item->revision),
                                       parent_dir_abspath,
                                       eb->timestamp_sleep, eb->ctx,
                                       scratch_pool));

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/merge.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/merge.c Fri Feb 17 10:52:38 2012
@@ -3264,7 +3264,7 @@ get_full_mergeinfo(svn_mergeinfo_t *reco
       /* Retrieve the origin (original_*) of the node, or just the
          url if the node was not copied. */
       SVN_ERR(svn_wc__node_get_origin(FALSE, &target_rev, &repos_relpath,
-                                      &repos_root, NULL,
+                                      &repos_root, NULL, NULL,
                                       ctx->wc_ctx, target_abspath, FALSE,
                                       scratch_pool, scratch_pool));
 

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/mergeinfo.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/mergeinfo.c Fri Feb 17 10:52:38 2012
@@ -612,7 +612,7 @@ svn_client__get_wc_or_repos_mergeinfo_ca
      a URL and without that we cannot get accurate mergeinfo for
      TARGET_WCPATH. */
   SVN_ERR(svn_wc__node_get_origin(NULL, &target_rev, &repos_relpath,
-                                  &repos_root, NULL,
+                                  &repos_root, NULL, NULL,
                                   ctx->wc_ctx, local_abspath, FALSE,
                                   scratch_pool, scratch_pool));
 
@@ -1124,7 +1124,7 @@ get_mergeinfo(svn_mergeinfo_catalog_t *m
                                       scratch_pool));
 
       SVN_ERR(svn_wc__node_get_origin(NULL, &rev, &repos_relpath,
-                                      &repos_root_url, NULL,
+                                      &repos_root_url, NULL, NULL,
                                       ctx->wc_ctx, local_abspath, FALSE,
                                       scratch_pool, scratch_pool));
 
@@ -1570,15 +1570,30 @@ filter_log_entry_with_rangelist(void *ba
                                                       iterpool));
                       if (intersection->nelts)
                         {
-                          SVN_ERR(svn_rangelist_intersect(&intersection,
-                                                          rangelist,
-                                                          this_rev_rangelist,
-                                                          TRUE, iterpool));
-                          if (intersection->nelts)
+                          if (ancestor_is_self)
                             {
+                              /* TARGET_PATH_AFFECTED has explicit mergeinfo,
+                                 so we don't need to worry if that mergeinfo
+                                 is inheritable or not. */
                               found_this_revision = TRUE;
                               break;
                             }
+                          else
+                            {
+                              /* TARGET_PATH_AFFECTED inherited its mergeinfo,
+                                 se we have to ignore non-inheritable
+                                 ranges. */
+                              SVN_ERR(svn_rangelist_intersect(
+                                &intersection,
+                                rangelist,
+                                this_rev_rangelist,
+                                TRUE, iterpool));
+                              if (intersection->nelts)
+                                {
+                                  found_this_revision = TRUE;
+                                  break;
+                                }
+                            }
                         }
                     }
                 }

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/patch.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/patch.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/patch.c Fri Feb 17 10:52:38 2012
@@ -1677,7 +1677,7 @@ apply_hunk(patch_target_t *target, targe
                                                    &eol_str, &eof,
                                                    iterpool, iterpool));
       lines_read++;
-      if (! eof && lines_read > hi->fuzz &&
+      if (lines_read > hi->fuzz &&
           lines_read <= svn_diff_hunk_get_modified_length(hi->hunk) - hi->fuzz)
         {
           apr_size_t len;
@@ -2696,7 +2696,7 @@ delete_empty_dirs(apr_array_header_t *ta
   empty_dirs = apr_hash_make(scratch_pool);
   non_empty_dirs = apr_hash_make(scratch_pool);
   iterpool = svn_pool_create(scratch_pool);
-  for (i = 0; i < targets_info->nelts; i++)
+  for (i = 0; i < deleted_targets->nelts; i++)
     {
       svn_boolean_t parent_empty;
       patch_target_info_t *target_info;
@@ -2707,7 +2707,7 @@ delete_empty_dirs(apr_array_header_t *ta
       if (ctx->cancel_func)
         SVN_ERR(ctx->cancel_func(ctx->cancel_baton));
 
-      target_info = APR_ARRAY_IDX(targets_info, i, patch_target_info_t *);
+      target_info = APR_ARRAY_IDX(deleted_targets, i, patch_target_info_t *);
 
       parent = svn_dirent_dirname(target_info->local_abspath, iterpool);
 

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_client/ra.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_client/ra.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_client/ra.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_client/ra.c Fri Feb 17 10:52:38 2012
@@ -633,7 +633,7 @@ svn_client__repos_locations(const char *
           svn_boolean_t is_copy;
 
           SVN_ERR(svn_wc__node_get_origin(&is_copy, &peg_revnum, &repos_relpath,
-                                          &repos_root_url, NULL,
+                                          &repos_root_url, NULL, NULL,
                                           ctx->wc_ctx, local_abspath_or_url,
                                           FALSE, subpool, subpool));
 

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_diff/parse-diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_diff/parse-diff.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_diff/parse-diff.c Fri Feb 17 10:52:38 2012
@@ -589,11 +589,19 @@ parse_next_hunk(svn_diff_hunk_t **hunk,
   svn_boolean_t eof, in_hunk, hunk_seen;
   apr_off_t pos, last_line;
   apr_off_t start, end;
+  apr_off_t original_end;
+  apr_off_t modified_end;
   svn_linenum_t original_lines;
   svn_linenum_t modified_lines;
   svn_linenum_t leading_context;
   svn_linenum_t trailing_context;
   svn_boolean_t changed_line_seen;
+  enum {
+    noise_line,
+    original_line,
+    modified_line,
+    context_line
+  } last_line_type;
   apr_pool_t *iterpool;
 
   *prop_operation = svn_diff_op_unchanged;
@@ -614,12 +622,17 @@ parse_next_hunk(svn_diff_hunk_t **hunk,
   leading_context = 0;
   trailing_context = 0;
   changed_line_seen = FALSE;
+  original_end = 0;
+  modified_end = 0;
   *hunk = apr_pcalloc(result_pool, sizeof(**hunk));
 
   /* Get current seek position -- APR has no ftell() :( */
   pos = 0;
   SVN_ERR(svn_io_file_seek(apr_file, APR_CUR, &pos, scratch_pool));
 
+  /* Start out assuming noise. */
+  last_line_type = noise_line;
+
   iterpool = svn_pool_create(scratch_pool);
   do
     {
@@ -631,17 +644,58 @@ parse_next_hunk(svn_diff_hunk_t **hunk,
       SVN_ERR(readline(apr_file, &line, NULL, &eof, APR_SIZE_MAX,
                        iterpool, iterpool));
 
-      if (! eof)
-        {
-          /* Update line offset for next iteration. */
-          pos = 0;
-          SVN_ERR(svn_io_file_seek(apr_file, APR_CUR, &pos, iterpool));
-        }
+      /* Update line offset for next iteration. */
+      pos = 0;
+      SVN_ERR(svn_io_file_seek(apr_file, APR_CUR, &pos, iterpool));
 
       /* Lines starting with a backslash are comments, such as
        * "\ No newline at end of file". */
       if (line->data[0] == '\\')
-        continue;
+        {
+          if (in_hunk &&
+              ((!*is_property &&
+                strcmp(line->data, "\\ No newline at end of file") == 0) ||
+               (*is_property &&
+                strcmp(line->data, "\\ No newline at end of property") == 0)))
+            {
+              char eolbuf[2];
+              apr_size_t len;
+              apr_off_t off;
+              apr_off_t hunk_text_end;
+
+              /* Comment terminates the hunk text and says the hunk text
+               * has no trailing EOL. Snip off trailing EOL which is part
+               * of the patch file but not part of the hunk text. */
+              off = last_line - 2;
+              SVN_ERR(svn_io_file_seek(apr_file, APR_SET, &off, iterpool));
+              len = sizeof(eolbuf);
+              SVN_ERR(svn_io_file_read_full2(apr_file, eolbuf, len, &len,
+                                             &eof, iterpool));
+              if (eolbuf[0] == '\r' && eolbuf[1] == '\n')
+                hunk_text_end = last_line - 2;
+              else if (eolbuf[1] == '\n' || eolbuf[1] == '\r')
+                hunk_text_end = last_line - 1;
+              else
+                hunk_text_end = last_line;
+
+              if (last_line_type == original_line && original_end == 0)
+                original_end = hunk_text_end;
+              else if (last_line_type == modified_line && modified_end == 0)
+                modified_end = hunk_text_end;
+              else if (last_line_type == context_line)
+                {
+                  if (original_end == 0)
+                    original_end = hunk_text_end;
+                  if (modified_end == 0)
+                    modified_end = hunk_text_end;
+                  break;
+                }
+
+              SVN_ERR(svn_io_file_seek(apr_file, APR_SET, &pos, iterpool));
+            }
+
+          continue;
+        }
 
       if (in_hunk)
         {
@@ -672,6 +726,7 @@ parse_next_hunk(svn_diff_hunk_t **hunk,
                 trailing_context++;
               else
                 leading_context++;
+              last_line_type = context_line;
             }
           else if (original_lines > 0 && c == del)
             {
@@ -685,6 +740,7 @@ parse_next_hunk(svn_diff_hunk_t **hunk,
                 trailing_context = 0;
 
               original_lines--;
+              last_line_type = original_line;
             }
           else if (modified_lines > 0 && c == add)
             {
@@ -698,13 +754,26 @@ parse_next_hunk(svn_diff_hunk_t **hunk,
                 trailing_context = 0;
 
               modified_lines--;
+              last_line_type = modified_line;
             }
           else
             {
-              /* The start of the current line marks the first byte
-               * after the hunk text. */
-              end = last_line;
+              if (eof)
+                {
+                  /* The hunk ends at EOF. */
+                  end = pos;
+                }
+              else
+                {
+                  /* The start of the current line marks the first byte
+                   * after the hunk text. */
+                  end = last_line;
+                }
 
+              if (original_end == 0)
+                original_end = end;
+              if (modified_end == 0)
+                modified_end = end;
               break; /* Hunk was empty or has been read. */
             }
         }
@@ -784,10 +853,10 @@ parse_next_hunk(svn_diff_hunk_t **hunk,
       (*hunk)->diff_text_range.end = end;
       (*hunk)->original_text_range.start = start;
       (*hunk)->original_text_range.current = start;
-      (*hunk)->original_text_range.end = end;
+      (*hunk)->original_text_range.end = original_end;
       (*hunk)->modified_text_range.start = start;
       (*hunk)->modified_text_range.current = start;
-      (*hunk)->modified_text_range.end = end;
+      (*hunk)->modified_text_range.end = modified_end;
     }
   else
     /* Something went wrong, just discard the result. */

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_fs_fs/fs_fs.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_fs_fs/fs_fs.c Fri Feb 17 10:52:38 2012
@@ -2575,7 +2575,7 @@ struct rep_args
 
   svn_revnum_t base_revision;
   apr_off_t base_offset;
-  apr_size_t base_length;
+  svn_filesize_t base_length;
 };
 
 /* Read the next line from file FILE and parse it as a text
@@ -2636,7 +2636,7 @@ read_rep_line(struct rep_args **rep_args
   if (! str)
     goto error;
   SVN_ERR(svn_cstring_atoi64(&val, str));
-  rep_args->base_length = (apr_size_t)val;
+  rep_args->base_length = (svn_filesize_t)val;
 
   *rep_args_p = rep_args;
   return SVN_NO_ERROR;
@@ -7187,7 +7187,7 @@ svn_fs_fs__ensure_dir_exists(const char 
 
   /* We successfully created a new directory.  Dup the permissions
      from FS->path. */
-  return svn_io_copy_perms(path, fs_path, pool);
+  return svn_io_copy_perms(fs_path, path, pool);
 }
 
 /* Set *NODE_ORIGINS to a hash mapping 'const char *' node IDs to

Modified: subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_neon/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_neon/log.c?rev=1245385&r1=1245384&r2=1245385&view=diff
==============================================================================
--- subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_neon/log.c (original)
+++ subversion/branches/1.7.x-r1210147/subversion/libsvn_ra_neon/log.c Fri Feb 17 10:52:38 2012
@@ -32,6 +32,7 @@
 #include "svn_error.h"
 #include "svn_pools.h"
 #include "svn_path.h"
+#include "svn_base64.h"
 #include "svn_xml.h"
 #include "svn_props.h"
 
@@ -52,6 +53,8 @@ struct log_baton
   */
   svn_stringbuf_t *want_cdata;
   svn_stringbuf_t *cdata;
+  const char *cdata_encoding; /* encoding of CDATA (NULL or "base64") */
+
   /* Allocate log message information.
    * NOTE: this pool may be cleared multiple times as log messages are
    * received.
@@ -162,14 +165,27 @@ log_start_element(int *elem, void *baton
     case ELEM_comment:
       lb->want_cdata = lb->cdata;
       svn_stringbuf_setempty(lb->cdata);
+      lb->cdata_encoding = NULL;
+          
+      /* Some tags might contain encoded CDATA. */
+      if ((elm->id == ELEM_comment) ||
+          (elm->id == ELEM_creator_displayname) ||
+          (elm->id == ELEM_log_date) ||
+          (elm->id == ELEM_rev_prop))
+        {
+          lb->cdata_encoding = svn_xml_get_attr_value("encoding", atts);
+          if (lb->cdata_encoding)
+            lb->cdata_encoding = apr_pstrdup(lb->subpool, lb->cdata_encoding);
+        }
+
+      /* revprop tags have names. */
       if (elm->id == ELEM_revprop)
         {
-          lb->revprop_name = apr_pstrdup(lb->subpool,
-                                         svn_xml_get_attr_value("name",
-                                                                atts));
-          if (lb->revprop_name == NULL)
+          const char *revprop_name = svn_xml_get_attr_value("name", atts);
+          if (revprop_name == NULL)
             return svn_error_createf(SVN_ERR_RA_DAV_MALFORMED_DATA, NULL,
                                      _("Missing name attr in revprop element"));
+          lb->revprop_name = apr_pstrdup(lb->subpool, revprop_name);
         }
       break;
     case ELEM_has_children:
@@ -235,6 +251,36 @@ log_start_element(int *elem, void *baton
   return SVN_NO_ERROR;
 }
 
+/*
+ * Set *DECODED_CDATA to a copy of current CDATA being tracked in LB,
+ * decoded as necessary, and allocated from LB->subpool.
+ */
+static svn_error_t *
+maybe_decode_log_cdata(const svn_string_t **decoded_cdata,
+                       struct log_baton *lb)
+{
+  if (lb->cdata_encoding)
+    {
+      svn_string_t in;
+      in.data = lb->cdata->data;
+      in.len = lb->cdata->len;
+
+      /* Check for a known encoding type.  This is easy -- there's
+         only one.  */
+      if (strcmp(lb->cdata_encoding, "base64") != 0)
+        return svn_error_create(SVN_ERR_XML_MALFORMED, NULL, NULL);
+
+      *decoded_cdata = svn_base64_decode_string(&in, lb->subpool);
+    }
+  else
+    {
+      *decoded_cdata = svn_string_create_from_buf(lb->cdata, lb->subpool);
+    }
+
+  return SVN_NO_ERROR;
+}
+
+                       
 
 /*
  * This implements the `svn_ra_neon__xml_endelm_cb' prototype.
@@ -244,6 +290,10 @@ log_end_element(void *baton, int state,
                 const char *nspace, const char *name)
 {
   struct log_baton *lb = baton;
+  const svn_string_t *decoded_cdata;
+
+  if (lb->want_cdata)
+    SVN_ERR(maybe_decode_log_cdata(&decoded_cdata, lb));
 
   switch (state)
     {
@@ -256,8 +306,7 @@ log_end_element(void *baton, int state,
           if (! lb->log_entry->revprops)
             lb->log_entry->revprops = apr_hash_make(lb->subpool);
           apr_hash_set(lb->log_entry->revprops, SVN_PROP_REVISION_AUTHOR,
-                       APR_HASH_KEY_STRING,
-                       svn_string_create_from_buf(lb->cdata, lb->subpool));
+                       APR_HASH_KEY_STRING, decoded_cdata);
         }
       break;
     case ELEM_log_date:
@@ -266,8 +315,7 @@ log_end_element(void *baton, int state,
           if (! lb->log_entry->revprops)
             lb->log_entry->revprops = apr_hash_make(lb->subpool);
           apr_hash_set(lb->log_entry->revprops, SVN_PROP_REVISION_DATE,
-                       APR_HASH_KEY_STRING,
-                       svn_string_create_from_buf(lb->cdata, lb->subpool));
+                       APR_HASH_KEY_STRING, decoded_cdata);
         }
       break;
     case ELEM_added_path:
@@ -289,8 +337,7 @@ log_end_element(void *baton, int state,
       if (! lb->log_entry->revprops)
         lb->log_entry->revprops = apr_hash_make(lb->subpool);
       apr_hash_set(lb->log_entry->revprops, lb->revprop_name,
-                   APR_HASH_KEY_STRING,
-                   svn_string_create_from_buf(lb->cdata, lb->subpool));
+                   APR_HASH_KEY_STRING, decoded_cdata);
       break;
     case ELEM_comment:
       if (lb->want_message)
@@ -298,8 +345,7 @@ log_end_element(void *baton, int state,
           if (! lb->log_entry->revprops)
             lb->log_entry->revprops = apr_hash_make(lb->subpool);
           apr_hash_set(lb->log_entry->revprops, SVN_PROP_REVISION_LOG,
-                       APR_HASH_KEY_STRING,
-                       svn_string_create_from_buf(lb->cdata, lb->subpool));
+                       APR_HASH_KEY_STRING, decoded_cdata);
         }
       break;
     case ELEM_log_item:
@@ -380,8 +426,8 @@ svn_error_t * svn_ra_neon__get_log(svn_r
      Maybe Greg can explain?  Meanwhile, I'm tentatively using
      "request_*" for my local vars below. */
 
-  static const char log_request_head[]
-    = "<S:log-report xmlns:S=\"" SVN_XML_NAMESPACE "\">" DEBUG_CR;
+  static const char log_request_head[] = "<S:log-report xmlns:S=\""
+    SVN_XML_NAMESPACE "\">" DEBUG_CR "<S:encode-binary-props/>";
 
   static const char log_request_tail[] = "</S:log-report>" DEBUG_CR;
 
@@ -494,6 +540,7 @@ svn_error_t * svn_ra_neon__get_log(svn_r
   lb.cdata = svn_stringbuf_create("", pool);
   lb.log_entry = svn_log_entry_create(pool);
   lb.want_cdata = NULL;
+  lb.cdata_encoding = NULL;
   reset_log_item(&lb);
 
   /* ras's URL may not exist in HEAD, and thus it's not safe to send