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, ©_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, ©from_rev,
©from_repos_relpath,
©from_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