Return-Path: X-Original-To: apmail-subversion-commits-archive@minotaur.apache.org Delivered-To: apmail-subversion-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0817594AF for ; Tue, 27 Sep 2011 16:31:13 +0000 (UTC) Received: (qmail 78481 invoked by uid 500); 27 Sep 2011 16:31:12 -0000 Delivered-To: apmail-subversion-commits-archive@subversion.apache.org Received: (qmail 78454 invoked by uid 500); 27 Sep 2011 16:31:12 -0000 Mailing-List: contact commits-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@subversion.apache.org Delivered-To: mailing list commits@subversion.apache.org Received: (qmail 78447 invoked by uid 99); 27 Sep 2011 16:31:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Sep 2011 16:31:12 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Sep 2011 16:31:02 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id DF4EB23888FE for ; Tue, 27 Sep 2011 16:30:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1176459 [1/2] - in /subversion/branches/1.7.x: ./ subversion/include/ subversion/include/private/ subversion/libsvn_client/ subversion/libsvn_fs/ subversion/libsvn_fs_base/ subversion/libsvn_fs_fs/ subversion/libsvn_ra/ subversion/libsvn_r... Date: Tue, 27 Sep 2011 16:30:37 -0000 To: commits@subversion.apache.org From: hwright@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20110927163039.DF4EB23888FE@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: hwright Date: Tue Sep 27 16:30:36 2011 New Revision: 1176459 URL: http://svn.apache.org/viewvc?rev=1176459&view=rev Log: Reintergrate the 1.7.x-r1173425 branch: * r1173425, r1173639, r1174797 Fix issue #4013 'merge performance regression in 1.7 when target has no explicit mergeinfo' by reverting the fixes for issue #3669 'inheritance an result in mergeinfo describing nonexistent sources'. Justification: The issue #3669 fixes reverted in r1173425 imposed an unacceptable performance penalty on the server. A new approach is needed, but can wait till 1.8. Branch: ^/subversion/branches/1.7.x-r1173425 Notes: Issue #3668 'inheritance can result in self-referential mergeinfo' is also reverted as part of this change, see http://subversion.tigris.org/issues/show_bug.cgi?id=3668#desc5 r1173425 is the reversion of the issue #3669 fixes including all the API changes. r1173639 is the reversion of r1036078, which was a follow-up to the issue #3669 fixes that didn't get fully removed in r1173425. r1174797 is a one-line hunk that mistakenly was not reverted in r1173425. Votes: +1: pburba, philip, cmpilato +0: ivan (r1173425 only, restart soak period for at least two weeks due API and client/server protocol) +0: danielsh (I didn't review merge_tests.py. All changes in merge.c look good, but I can't tell if additional changes that should have been included are missing, so not upgrading the vote to +1.) Modified: subversion/branches/1.7.x/ (props changed) subversion/branches/1.7.x/STATUS subversion/branches/1.7.x/subversion/include/private/svn_dav_protocol.h subversion/branches/1.7.x/subversion/include/svn_dav.h subversion/branches/1.7.x/subversion/include/svn_fs.h subversion/branches/1.7.x/subversion/include/svn_ra.h subversion/branches/1.7.x/subversion/include/svn_ra_svn.h subversion/branches/1.7.x/subversion/include/svn_repos.h subversion/branches/1.7.x/subversion/libsvn_client/copy.c subversion/branches/1.7.x/subversion/libsvn_client/merge.c subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.c subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.h subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.c subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.h subversion/branches/1.7.x/subversion/libsvn_fs_base/fs.c subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.c subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.h subversion/branches/1.7.x/subversion/libsvn_fs_fs/fs.c subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.c subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.h subversion/branches/1.7.x/subversion/libsvn_ra/deprecated.c subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.c subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.h subversion/branches/1.7.x/subversion/libsvn_ra_local/ra_plugin.c subversion/branches/1.7.x/subversion/libsvn_ra_neon/mergeinfo.c subversion/branches/1.7.x/subversion/libsvn_ra_neon/options.c subversion/branches/1.7.x/subversion/libsvn_ra_neon/ra_neon.h subversion/branches/1.7.x/subversion/libsvn_ra_serf/mergeinfo.c subversion/branches/1.7.x/subversion/libsvn_ra_serf/options.c subversion/branches/1.7.x/subversion/libsvn_ra_serf/ra_serf.h subversion/branches/1.7.x/subversion/libsvn_ra_svn/client.c subversion/branches/1.7.x/subversion/libsvn_ra_svn/protocol subversion/branches/1.7.x/subversion/libsvn_repos/fs-wrap.c subversion/branches/1.7.x/subversion/libsvn_repos/log.c subversion/branches/1.7.x/subversion/libsvn_repos/rev_hunt.c subversion/branches/1.7.x/subversion/mod_dav_svn/reports/mergeinfo.c subversion/branches/1.7.x/subversion/mod_dav_svn/version.c subversion/branches/1.7.x/subversion/svnserve/serve.c subversion/branches/1.7.x/subversion/tests/cmdline/merge_tests.py Propchange: subversion/branches/1.7.x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 27 16:30:36 2011 @@ -9,6 +9,7 @@ /subversion/branches/1.7.x-r1155160:1158704-1159223 /subversion/branches/1.7.x-r1159093:1159097-1159230 /subversion/branches/1.7.x-r1163557:1163574-1170648 +/subversion/branches/1.7.x-r1173425:1173429-1176454 /subversion/branches/atomic-revprop:965046-1000689 /subversion/branches/bdb-reverse-deltas:872050-872529 /subversion/branches/diff-callbacks3:870059-870761 @@ -40,7 +41,6 @@ /subversion/branches/issue-3220-dev:872210-872226 /subversion/branches/issue-3242-dev:879653-896436 /subversion/branches/issue-3334-dirs:875156-875867 -/subversion/branches/issue-3668-3669:1031000-1035744 /subversion/branches/issue-3975:1152931-1160746 /subversion/branches/kwallet:870785-871314 /subversion/branches/log-g-performance:870941-871032 @@ -64,4 +64,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,1148853,1148877,1148882,1148936,1149105,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,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,115 8187,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,1163557,1163792,1163953,1164027,1164517,1164535,1164554,1164580,1164645,1164760,1164765,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1169524,1169531,1169650,1171708,1173111,1174051,1174060,1174652 +/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,1148853,1148877,1148882,1148936,1149105,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,1151906,1151911,1152129,1152140,1152189-1152190,1152267,1152282,1152286,1152726,1152809,1153138,1153141,1153416,1153799,1153807,1153968,1154009,1154023,1154115,1154119,1154121,1154144,1154155,1154159,1154165,1154215,1154225,1154273,1154461,1154717-1154718,1154733,1154908,1154982,1155015,1155044,1155124,1155131,1155160,1155313,1155334,1155391,1155404,1156085,1156098,1156216,1156218,1156312,1156527,1156717,1156721,1156750,1156827,1156838,1157416,115 8187,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,1163557,1163792,1163953,1164027,1164517,1164535,1164554,1164580,1164645,1164760,1164765,1166500,1166555,1166678,1167062,1167173,1167209,1167269,1167503,1169524,1169531,1169650,1171708,1173111,1173425,1173639,1174051,1174060,1174652,1174797 Modified: subversion/branches/1.7.x/STATUS URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/STATUS?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/STATUS (original) +++ subversion/branches/1.7.x/STATUS Tue Sep 27 16:30:36 2011 @@ -174,32 +174,3 @@ Veto-blocked changes: Approved changes: ================= - - * r1173425, r1173639, r1174797 - Fix issue #4013 'merge performance regression in 1.7 when target has no - explicit mergeinfo' by reverting the fixes for issue #3669 'inheritance - an result in mergeinfo describing nonexistent sources'. - Justification: - The issue #3669 fixes reverted in r1173425 imposed an unacceptable - performance penalty on the server. A new approach is needed, but can - wait till 1.8. - Branch: - ^/subversion/branches/1.7.x-r1173425 - Notes: - Issue #3668 'inheritance can result in self-referential mergeinfo' is - also reverted as part of this change, see - http://subversion.tigris.org/issues/show_bug.cgi?id=3668#desc5 - r1173425 is the reversion of the issue #3669 fixes including all the - API changes. r1173639 is the reversion of r1036078, which was a - follow-up to the issue #3669 fixes that didn't get fully removed - in r1173425. r1174797 is a one-line hunk that mistakenly was not - reverted in r1173425. - Votes: - +1: pburba, philip, cmpilato - +0: ivan (r1173425 only, restart soak period for at least two weeks due - API and client/server protocol) - +0: danielsh (I didn't review merge_tests.py. - All changes in merge.c look good, but I can't tell if - additional changes that should have been included are - missing, so not upgrading the vote to +1.) - Modified: subversion/branches/1.7.x/subversion/include/private/svn_dav_protocol.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/include/private/svn_dav_protocol.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/include/private/svn_dav_protocol.h (original) +++ subversion/branches/1.7.x/subversion/include/private/svn_dav_protocol.h Tue Sep 27 16:30:36 2011 @@ -43,7 +43,6 @@ extern "C" { #define SVN_DAV__PATH "path" #define SVN_DAV__INHERIT "inherit" #define SVN_DAV__REVISION "revision" -#define SVN_DAV__VALIDATE_INHERITED "validate-inherited" #define SVN_DAV__INCLUDE_DESCENDANTS "include-descendants" #define SVN_DAV__VERSION_NAME "version-name" Modified: subversion/branches/1.7.x/subversion/include/svn_dav.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/include/svn_dav.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/include/svn_dav.h (original) +++ subversion/branches/1.7.x/subversion/include/svn_dav.h Tue Sep 27 16:30:36 2011 @@ -266,11 +266,6 @@ extern "C" { */ #define SVN_DAV_NS_DAV_SVN_MERGEINFO SVN_DAV_PROP_NS_DAV "svn/mergeinfo" -/** Similar SVN_DAV_NS_DAV_SVN_MERGEINFO but indicates that the server - * knows how to handle requests to validate inherited mergeinfo. */ -#define SVN_DAV_NS_DAV_SVN_MERGEINFO_VALIDATION \ - SVN_DAV_PROP_NS_DAV "svn/mergeinfo-validation" - /** Presence of this in a DAV header in an OPTIONS response indicates * that the transmitter (in this case, the server) knows how to send * custom revprops in log responses. */ Modified: subversion/branches/1.7.x/subversion/include/svn_fs.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/include/svn_fs.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/include/svn_fs.h (original) +++ subversion/branches/1.7.x/subversion/include/svn_fs.h Tue Sep 27 16:30:36 2011 @@ -1484,11 +1484,6 @@ svn_fs_closest_copy(svn_fs_root_t **root * @a inherit indicates whether to retrieve explicit, * explicit-or-inherited, or only inherited mergeinfo. * - * If the mergeinfo for any path is inherited and - * @a validate_inherited_mergeinfo is TRUE, then the mergeinfo for - * that path in @a *catalog will only contain merge source - * path-revisions that actually exist in repository. - * * If @a include_descendants is TRUE, then additionally return the * mergeinfo for any descendant of any element of @a paths which has * the #SVN_PROP_MERGEINFO property explicitly set on it. (Note @@ -1498,24 +1493,8 @@ svn_fs_closest_copy(svn_fs_root_t **root * * Do any necessary temporary allocation in @a pool. * - * @since New in 1.7. - */ -svn_error_t * -svn_fs_get_mergeinfo2(svn_mergeinfo_catalog_t *catalog, - svn_fs_root_t *root, - const apr_array_header_t *paths, - svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, - svn_boolean_t include_descendants, - apr_pool_t *pool); - -/** - * Similar to svn_fs_get_mergeinfo2(), but with - * @a validate_inherited_mergeinfo always passed as FALSE. - * - * @deprecated Provided for backward compatibility with the 1.6 API. + * @since New in 1.5. */ -SVN_DEPRECATED svn_error_t * svn_fs_get_mergeinfo(svn_mergeinfo_catalog_t *catalog, svn_fs_root_t *root, @@ -1524,25 +1503,6 @@ svn_fs_get_mergeinfo(svn_mergeinfo_catal svn_boolean_t include_descendants, apr_pool_t *pool); -/** - * Set @a *validated_mergeinfo equal to deep copy of @a mergeinfo, less - * any mergeinfo that describes path-revs that do not exist in @a fs. - * If @a mergeinfo is empty then @a *validated_mergeinfo is set to an empty - * mergeinfo hash. If @a mergeinfo is NULL then @a *validated_mergeinfo is - * set to NULL. - * - * @a *validated_mergeinfo is allocated in @a result_pool. All temporary - * allocations are performed in @a scratch_pool. - * - * @since New in 1.7. - */ -svn_error_t * -svn_fs_validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo, - svn_fs_t *fs, - svn_mergeinfo_t mergeinfo, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - /** Merge changes between two nodes into a third node. * * Given nodes @a source and @a target, and a common ancestor @a ancestor, Modified: subversion/branches/1.7.x/subversion/include/svn_ra.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/include/svn_ra.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/include/svn_ra.h (original) +++ subversion/branches/1.7.x/subversion/include/svn_ra.h Tue Sep 27 16:30:36 2011 @@ -1017,12 +1017,6 @@ svn_ra_get_dir(svn_ra_session_t *session * @a inherit indicates whether explicit, explicit or inherited, or * only inherited mergeinfo for @a paths is retrieved. * - * If server supports the #SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO - * capability, the mergeinfo for any path is inherited, and - * @a validate_inherited_mergeinfo is TRUE, then request that the server - * validate the mergeinfo in @a *catalog, so it contains only merge source - * path-revisions that actually exist in repository. - * * If @a include_descendants is TRUE, then additionally return the * mergeinfo for any descendant of any element of @a paths which has * the @c SVN_PROP_MERGEINFO property explicitly set on it. (Note @@ -1039,25 +1033,8 @@ svn_ra_get_dir(svn_ra_session_t *session * upgraded), return @c SVN_ERR_UNSUPPORTED_FEATURE in preference to * any other error that might otherwise be returned. * - * @since New in 1.7. - */ -svn_error_t * -svn_ra_get_mergeinfo2(svn_ra_session_t *session, - svn_mergeinfo_catalog_t *catalog, - const apr_array_header_t *paths, - svn_revnum_t revision, - svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, - svn_boolean_t include_descendants, - apr_pool_t *pool); - -/** - * Similar to svn_ra_get_mergeinfo2(), but with - * @a validate_inherited_mergeinfo always passed as FALSE. - * - * @deprecated Provided for backward compatibility with the 1.6 API. + * @since New in 1.5. */ -SVN_DEPRECATED svn_error_t * svn_ra_get_mergeinfo(svn_ra_session_t *session, svn_mergeinfo_catalog_t *catalog, @@ -1980,15 +1957,6 @@ svn_ra_has_capability(svn_ra_session_t * */ #define SVN_RA_CAPABILITY_ATOMIC_REVPROPS "atomic-revprops" -/** - * The capability of validating inherited mergeinfo in - * svn_ra_get_mergeinfo2(). - * - * @since New in 1.7. - */ -#define SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO \ - "validate-inherited-mergeinfo" - /* *** PLEASE READ THIS IF YOU ADD A NEW CAPABILITY *** * * RA layers generally fetch all capabilities when asked about any Modified: subversion/branches/1.7.x/subversion/include/svn_ra_svn.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/include/svn_ra_svn.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/include/svn_ra_svn.h (original) +++ subversion/branches/1.7.x/subversion/include/svn_ra_svn.h Tue Sep 27 16:30:36 2011 @@ -54,9 +54,6 @@ extern "C" { #define SVN_RA_SVN_CAP_COMMIT_REVPROPS "commit-revprops" /* maps to SVN_RA_CAPABILITY_MERGEINFO: */ #define SVN_RA_SVN_CAP_MERGEINFO "mergeinfo" -/* maps to SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO: */ -#define SVN_RA_SVN_CAP_VALIDATE_INHERITED_MERGEINFO \ - "validate-inherited-mergeinfo" /* maps to SVN_RA_CAPABILITY_DEPTH: */ #define SVN_RA_SVN_CAP_DEPTH "depth" /* maps to SVN_RA_CAPABILITY_LOG_REVPROPS */ Modified: subversion/branches/1.7.x/subversion/include/svn_repos.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/include/svn_repos.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/include/svn_repos.h (original) +++ subversion/branches/1.7.x/subversion/include/svn_repos.h Tue Sep 27 16:30:36 2011 @@ -1746,11 +1746,6 @@ svn_repos_get_logs(svn_repos_t *repos, * @a inherit indicates whether explicit, explicit or inherited, or * only inherited mergeinfo for @a paths is fetched. * - * If the mergeinfo for any path is inherited and - * @a validate_inherited_mergeinfo is TRUE, then the mergeinfo for - * that path in @a *catalog will only contain merge source - * path-revisions that actually exist in repository. - * * If @a revision is #SVN_INVALID_REVNUM, it defaults to youngest. * * If @a include_descendants is TRUE, then additionally return the @@ -1767,27 +1762,8 @@ svn_repos_get_logs(svn_repos_t *repos, * * Use @a pool for all allocations. * - * @since New in 1.7. - */ -svn_error_t * -svn_repos_fs_get_mergeinfo2(svn_mergeinfo_catalog_t *catalog, - svn_repos_t *repos, - const apr_array_header_t *paths, - svn_revnum_t revision, - svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, - svn_boolean_t include_descendants, - svn_repos_authz_func_t authz_read_func, - void *authz_read_baton, - apr_pool_t *pool); - -/** - * Similar to svn_repos_fs_get_mergeinfo2(), but with - * @a validate_inherited_mergeinfo always passed as FALSE. - * - * @deprecated Provided for backward compatibility with the 1.6 API. + * @since New in 1.5. */ -SVN_DEPRECATED svn_error_t * svn_repos_fs_get_mergeinfo(svn_mergeinfo_catalog_t *catalog, svn_repos_t *repos, Modified: subversion/branches/1.7.x/subversion/libsvn_client/copy.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_client/copy.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_client/copy.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_client/copy.c Tue Sep 27 16:30:36 2011 @@ -123,8 +123,8 @@ calculate_target_mergeinfo(svn_ra_sessio ra_session, src_url, pool)); SVN_ERR(svn_client__get_repos_mergeinfo(ra_session, &src_mergeinfo, "", src_revnum, - svn_mergeinfo_inherited, TRUE, - FALSE, pool)); + svn_mergeinfo_inherited, + TRUE, pool)); if (old_session_url) SVN_ERR(svn_ra_reparent(ra_session, old_session_url, pool)); } Modified: subversion/branches/1.7.x/subversion/libsvn_client/merge.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_client/merge.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_client/merge.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_client/merge.c Tue Sep 27 16:30:36 2011 @@ -180,10 +180,6 @@ typedef struct merge_cmd_baton_t { is TRUE.*/ svn_boolean_t mergeinfo_capable; /* Whether the merge source server is capable of Merge Tracking. */ - svn_boolean_t mergeinfo_validation_capable; /* Whether the merge source - server is capable of - validating inherited - mergeinfo. */ svn_boolean_t ignore_ancestry; /* Are we ignoring ancestry (and by extension, mergeinfo)? FALSE if SOURCES_ANCESTRAL is FALSE. */ @@ -3181,102 +3177,6 @@ fix_deleted_subtree_ranges(const char *u /*** Determining What Remains To Be Merged ***/ - -/* Contact the repository to get the portion of a working copy path's - inherited mergeinfo (if any) which contains non-existent mergeinfo - sources -- see http://subversion.tigris.org/issues/show_bug.cgi?id=3669 - - Note: This function should only be called if the server supports the - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO capability. - - Query the repository for the mergeinfo TARGET_ABSPATH inherits at its - base revision. - - If no mergeinfo is inherited set *INVALID_INHERITED_MERGEINFO to NULL. - - If only empty mergeinfo is inherited set *INVALID_INHERITED_MERGEINFO to - an empty hash. - - If non-empty mergeinfo is inherited then, if the server supports the - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO capability, remove all - existing path-revisions from the inherited mergeinfo, and set - *INVALID_INHERITED_MERGEINFO to the remainder. If all of the inherited - inherited mergeinfo describes non-existent paths, then set - *INVALID_INHERITED_MERGEINFO to an empty hash. - - RA_SESSION is an open session that may be temporarily reparented as - needed by this function. - - RESULT_POOL is used to allocate *INVALID_INHERITED_MERGEINFO, SCRATCH_POOL - is used for any temporary allocations. */ -static svn_error_t * -get_invalid_inherited_mergeinfo(svn_mergeinfo_t *invalid_inherited_mergeinfo, - svn_ra_session_t *ra_session, - const char *target_abspath, - svn_client_ctx_t *ctx, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool) -{ - svn_mergeinfo_t repos_raw_inherited; - svn_mergeinfo_t repos_validated_inherited; - svn_revnum_t base_revision; - - /* Our starting assumptions. */ - *invalid_inherited_mergeinfo = NULL; - - SVN_ERR(svn_wc__node_get_base_rev(&base_revision, ctx->wc_ctx, - target_abspath, scratch_pool)); - - /* If there is no base revision then TARGET_ABSPATH doesn't exist - in the repository yet, so we're done. */ - if (SVN_IS_VALID_REVNUM(base_revision)) - { - const char *target_url; - const char *session_url; - - /* Reparent RA_SESSION if necessary. */ - SVN_ERR(svn_wc__node_get_url(&target_url, ctx->wc_ctx, target_abspath, - scratch_pool, scratch_pool)); - SVN_ERR(svn_client__ensure_ra_session_url(&session_url, ra_session, - target_url, scratch_pool)); - - /* Contact the repository to derive the portion of - TARGET_ABSPATH's inherited mergeinfo which is non-existent - and remove it from */ - SVN_ERR(svn_client__get_repos_mergeinfo( - ra_session, &repos_raw_inherited, "", base_revision, - svn_mergeinfo_inherited, TRUE, - FALSE, scratch_pool)); - - if (repos_raw_inherited == NULL) - { - *invalid_inherited_mergeinfo = NULL; - } - else if (apr_hash_count(repos_raw_inherited) == 0) - { - *invalid_inherited_mergeinfo = apr_hash_make(result_pool); - } - else - { - SVN_ERR(svn_client__get_repos_mergeinfo( - ra_session, &repos_validated_inherited, "", base_revision, - svn_mergeinfo_inherited, TRUE, - TRUE, scratch_pool)); - SVN_ERR(svn_mergeinfo_remove2(invalid_inherited_mergeinfo, - repos_validated_inherited, - repos_raw_inherited, FALSE, - result_pool, scratch_pool)); - } - - /* If we needed to temporarily reparent RA_SESSION, then point it - back to its original URL. */ - if (session_url) - SVN_ERR(svn_client__ensure_ra_session_url(&session_url, ra_session, - session_url, scratch_pool)); - } - return SVN_NO_ERROR; -} - /* Get explicit and/or implicit mergeinfo for the working copy path TARGET_ABSPATH. @@ -3295,10 +3195,6 @@ get_invalid_inherited_mergeinfo(svn_merg is inherited rather than explicit. If RECORDED_MERGEINFO is NULL then INHERITED is ignored. - If the server supports the SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO - capability, and the resulting *RECORDED_MERGEINFO is inherited, and - VALIDATE_INHERITED is TRUE, then *RECORDED_MERGEINFO is validated as per - svn_ra_get_mergeinfo2(). If IMPLICIT_MERGEINFO is not NULL then START and END are limits on the the natural history sought, must both be valid revision numbers, and @@ -3316,7 +3212,6 @@ get_full_mergeinfo(svn_mergeinfo_t *reco svn_mergeinfo_t *implicit_mergeinfo, svn_boolean_t *inherited, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited, svn_ra_session_t *ra_session, const char *target_abspath, svn_revnum_t start, @@ -3327,9 +3222,7 @@ get_full_mergeinfo(svn_mergeinfo_t *reco { svn_boolean_t inherited_mergeinfo = FALSE; - /* First, we get the real mergeinfo. We use SCRATCH_POOL throughout this - block because we'll make a final copy of *RECORDED_MERGEINFO only after - removing any self-referential mergeinfo. */ + /* First, we get the real mergeinfo. */ if (recorded_mergeinfo) { svn_boolean_t inherited_from_repos; @@ -3340,39 +3233,9 @@ get_full_mergeinfo(svn_mergeinfo_t *reco FALSE, inherit, ra_session, target_abspath, - ctx, scratch_pool)); + ctx, result_pool)); if (inherited) *inherited = inherited_mergeinfo; - - /* Issue #3669: If TARGET_ABSPATH inherited its mergeinfo from a - working copy parent, then contact the repository to discover what - portion (if any) of that inherited mergeinfo describes non-existent - mergeinfo sources and remove it. - - If we already contacted the repository for inherited mergeinfo then - we've done all we can since svn_client__get_wc_or_repos_mergeinfo - will request validation by default when asking the repository. - - ### [PTB] Issue #3756 is still a problem here, i.e. TARGET_ABSPATH - ### inherits working mergeinfo from a working copy parent. */ - if (inherited_mergeinfo - && validate_inherited - && !inherited_from_repos) - { - svn_mergeinfo_t invalid_inherited_mergeinfo; - - SVN_ERR(get_invalid_inherited_mergeinfo( - &invalid_inherited_mergeinfo, - ra_session, target_abspath, ctx, - scratch_pool, scratch_pool)); - - if (invalid_inherited_mergeinfo - && apr_hash_count(invalid_inherited_mergeinfo)) - SVN_ERR(svn_mergeinfo_remove2(recorded_mergeinfo, - invalid_inherited_mergeinfo, - *recorded_mergeinfo, FALSE, - scratch_pool, scratch_pool)); - } } if (implicit_mergeinfo) @@ -3448,26 +3311,6 @@ get_full_mergeinfo(svn_mergeinfo_t *reco } } /*if (implicit_mergeinfo) */ - - if (recorded_mergeinfo && *recorded_mergeinfo) - { - /* Issue #3668: Remove any self-referential mergeinfo from that - which TARGET_ABSPATH inherited; but only do this if we were able to - validate inherited mergeinfo (issue #3669) or otherwise we end - up with fragmented mergeinfo, see - http://subversion.tigris.org/issues/show_bug.cgi?id=3668#desc5 */ - if (implicit_mergeinfo - && inherited_mergeinfo - && validate_inherited) - SVN_ERR(svn_mergeinfo_remove2(recorded_mergeinfo, - *implicit_mergeinfo, - *recorded_mergeinfo, FALSE, - result_pool, scratch_pool)); - else - *recorded_mergeinfo = svn_mergeinfo_dup(*recorded_mergeinfo, - result_pool); - } - return SVN_NO_ERROR; } @@ -3480,9 +3323,6 @@ get_full_mergeinfo(svn_mergeinfo_t *reco If PARENT->IMPLICIT_MERGEINFO is NULL, obtain it from the server. - VALIDATE_INHERITED functions as per the argument of the same name - in get_full_mergeinfo(). - Set CHILD->IMPLICIT_MERGEINFO to the mergeinfo inherited from PARENT->IMPLICIT_MERGEINFO. CHILD->IMPLICIT_MERGEINFO is allocated in POOL. @@ -3492,7 +3332,6 @@ inherit_implicit_mergeinfo_from_parent(s svn_client__merge_path_t *child, svn_revnum_t revision1, svn_revnum_t revision2, - svn_boolean_t validate_inherited, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, @@ -3509,7 +3348,7 @@ inherit_implicit_mergeinfo_from_parent(s if (!parent->implicit_mergeinfo) SVN_ERR(get_full_mergeinfo(NULL, &(parent->implicit_mergeinfo), NULL, svn_mergeinfo_inherited, - validate_inherited, ra_session, child->abspath, + ra_session, child->abspath, MAX(revision1, revision2), MIN(revision1, revision2), ctx, result_pool, scratch_pool)); @@ -3537,9 +3376,6 @@ inherit_implicit_mergeinfo_from_parent(s PARNET->IMPLICIT_MERGEINFO, otherwise contact the repository. Use SCRATCH_POOL for all temporary allocations. - VALIDATE_INHERITED functions as per the argument of the same name - in get_full_mergeinfo(). - PARENT, CHILD, REVISION1, REVISION2, RA_SESSION, and CTX are all cascased from the arguments of the same name in filter_merged_revisions() and the same conditions for that function @@ -3548,7 +3384,6 @@ static svn_error_t * ensure_implicit_mergeinfo(svn_client__merge_path_t *parent, svn_client__merge_path_t *child, svn_boolean_t child_inherits_parent, - svn_boolean_t validate_inherited, svn_revnum_t revision1, svn_revnum_t revision2, svn_ra_session_t *ra_session, @@ -3567,7 +3402,6 @@ ensure_implicit_mergeinfo(svn_client__me child, revision1, revision2, - validate_inherited, ra_session, ctx, result_pool, @@ -3576,7 +3410,6 @@ ensure_implicit_mergeinfo(svn_client__me SVN_ERR(get_full_mergeinfo(NULL, &(child->implicit_mergeinfo), NULL, svn_mergeinfo_inherited, - validate_inherited, ra_session, child->abspath, MAX(revision1, revision2), MIN(revision1, revision2), @@ -3624,9 +3457,6 @@ ensure_implicit_mergeinfo(svn_client__me mergeinfo on CHILD->ABSPATH or an empty hash if CHILD->ABSPATH has empty mergeinfo. - VALIDATE_INHERITED functions as per the argument of the same name - in get_full_mergeinfo(). - SCRATCH_POOL is used for all temporary allocations. NOTE: This should only be called when honoring mergeinfo. @@ -3642,7 +3472,6 @@ filter_merged_revisions(svn_client__merg svn_revnum_t revision1, svn_revnum_t revision2, svn_boolean_t child_inherits_implicit, - svn_boolean_t validate_inherited, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, @@ -3732,7 +3561,6 @@ filter_merged_revisions(svn_client__merg SVN_ERR(ensure_implicit_mergeinfo(parent, child, child_inherits_implicit, - validate_inherited, revision1, revision2, ra_session, @@ -3822,7 +3650,6 @@ filter_merged_revisions(svn_client__merg SVN_ERR(ensure_implicit_mergeinfo(parent, child, child_inherits_implicit, - validate_inherited, revision1, revision2, ra_session, @@ -3876,9 +3703,6 @@ filter_merged_revisions(svn_client__merg If not null, IMPLICIT_SRC_GAP is the gap, if any, in the natural history of URL1@REVISION1:URL2@REVISION2, see merge_cmd_baton_t.implicit_src_gap. - VALIDATE_INHERITED functions as per the argument of the same name - in get_full_mergeinfo(). - SCRATCH_POOL is used for all temporary allocations. Changes to CHILD and PARENT are made in RESULT_POOL. @@ -3906,7 +3730,6 @@ calculate_remaining_ranges(svn_client__m svn_mergeinfo_t target_mergeinfo, const apr_array_header_t *implicit_src_gap, svn_boolean_t child_inherits_implicit, - svn_boolean_t validate_inherited, svn_ra_session_t *ra_session, svn_client_ctx_t *ctx, apr_pool_t *result_pool, @@ -3957,7 +3780,6 @@ calculate_remaining_ranges(svn_client__m adjusted_target_mergeinfo, revision1, revision2, child_inherits_implicit, - validate_inherited, ra_session, ctx, result_pool, scratch_pool)); @@ -4235,7 +4057,6 @@ populate_remaining_ranges(apr_array_head SVN_ERR(get_full_mergeinfo(NULL, /* child->pre_merge_mergeinfo */ &(child->implicit_mergeinfo), NULL, /* child->inherited_mergeinfo */ - merge_b->mergeinfo_validation_capable, svn_mergeinfo_inherited, ra_session, child->abspath, MAX(revision1, revision2), @@ -4257,10 +4078,8 @@ populate_remaining_ranges(apr_array_head SVN_ERR_ASSERT(parent); child_inherits_implicit = (parent && !child->switched); - SVN_ERR(ensure_implicit_mergeinfo( - parent, child, + SVN_ERR(ensure_implicit_mergeinfo(parent, child, child_inherits_implicit, - merge_b->mergeinfo_validation_capable, revision1, revision2, ra_session, merge_b->ctx, result_pool, iterpool)); @@ -4335,11 +4154,10 @@ populate_remaining_ranges(apr_array_head /* Get implicit only for merge target. */ (i == 0) ? &(child->implicit_mergeinfo) : NULL, &(child->inherited_mergeinfo), - svn_mergeinfo_inherited, - merge_b->mergeinfo_validation_capable, ra_session, + svn_mergeinfo_inherited, ra_session, child->abspath, MAX(revision1, revision2), - 0, /* Get all implicit mergeinfo */ + MIN(revision1, revision2), merge_b->ctx, result_pool, iterpool)); /* If CHILD isn't the merge target find its parent. */ @@ -4362,15 +4180,13 @@ populate_remaining_ranges(apr_array_head exists but is not CHILD's repository parent. */ child_inherits_implicit = (parent && !child->switched); - SVN_ERR(calculate_remaining_ranges( - parent, child, + SVN_ERR(calculate_remaining_ranges(parent, child, source_root_url, child_url1, revision1, child_url2, revision2, child->pre_merge_mergeinfo, merge_b->implicit_src_gap, child_inherits_implicit, - merge_b->mergeinfo_validation_capable, ra_session, merge_b->ctx, result_pool, iterpool)); @@ -6822,10 +6638,9 @@ do_file_merge(svn_mergeinfo_catalog_t re err = get_full_mergeinfo(&target_mergeinfo, &(merge_target->implicit_mergeinfo), &inherited, svn_mergeinfo_inherited, - merge_b->mergeinfo_validation_capable, merge_b->ra_session1, target_abspath, MAX(revision1, revision2), - 0, /* Get all implicit mergeinfo */ + MIN(revision1, revision2), ctx, scratch_pool, iterpool); if (err) @@ -6848,13 +6663,11 @@ do_file_merge(svn_mergeinfo_catalog_t re by REVISION1:REVISION2. */ if (!merge_b->record_only) { - SVN_ERR(calculate_remaining_ranges( - NULL, merge_target, + SVN_ERR(calculate_remaining_ranges(NULL, merge_target, source_root_url, url1, revision1, url2, revision2, target_mergeinfo, merge_b->implicit_src_gap, FALSE, - merge_b->mergeinfo_validation_capable, merge_b->ra_session1, ctx, scratch_pool, iterpool)); @@ -8924,7 +8737,6 @@ do_merge(apr_hash_t **modified_subtrees, merge_cmd_baton.ignore_ancestry = ignore_ancestry; merge_cmd_baton.same_repos = same_repos; merge_cmd_baton.mergeinfo_capable = FALSE; - merge_cmd_baton.mergeinfo_validation_capable = FALSE; merge_cmd_baton.sources_ancestral = sources_ancestral; merge_cmd_baton.ctx = ctx; merge_cmd_baton.target_missing_child = FALSE; @@ -9006,30 +8818,10 @@ do_merge(apr_hash_t **modified_subtrees, an RA session to set, but shouldn't be reset for each iteration. */ if (! checked_mergeinfo_capability) { - svn_error_t *err; - SVN_ERR(svn_ra_has_capability(ra_session1, &merge_cmd_baton.mergeinfo_capable, SVN_RA_CAPABILITY_MERGEINFO, iterpool)); - err = svn_ra_has_capability( - ra_session1, - &merge_cmd_baton.mergeinfo_validation_capable, - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO, - iterpool); - if (err) - { - if (err->apr_err == SVN_ERR_UNKNOWN_CAPABILITY) - { - svn_error_clear(err); - merge_cmd_baton.mergeinfo_validation_capable = FALSE; - } - else - { - return svn_error_trace(err); - } - } - checked_mergeinfo_capability = TRUE; } @@ -10239,11 +10031,10 @@ find_unmerged_mergeinfo(svn_mergeinfo_ca apr_array_make(iterpool, 1, sizeof(const char *)); APR_ARRAY_PUSH(source_repos_rel_path_as_array, const char *) = source_path_rel_to_session; - SVN_ERR(svn_ra_get_mergeinfo2(source_ra_session, &subtree_catalog, + SVN_ERR(svn_ra_get_mergeinfo(source_ra_session, &subtree_catalog, source_repos_rel_path_as_array, source_rev, svn_mergeinfo_inherited, - FALSE, FALSE, - iterpool)); + FALSE, iterpool)); if (subtree_catalog) source_mergeinfo = apr_hash_get(subtree_catalog, source_path_rel_to_session, @@ -10586,11 +10377,10 @@ calculate_left_hand_side(const char **ur /* Get the mergeinfo from the source, including its descendants with differing explicit mergeinfo. */ APR_ARRAY_PUSH(source_repos_rel_path_as_array, const char *) = ""; - SVN_ERR(svn_ra_get_mergeinfo2(source_ra_session, &mergeinfo_catalog, + SVN_ERR(svn_ra_get_mergeinfo(source_ra_session, &mergeinfo_catalog, source_repos_rel_path_as_array, source_rev, svn_mergeinfo_inherited, - FALSE, TRUE, - iterpool)); + TRUE, iterpool)); if (mergeinfo_catalog) SVN_ERR(svn_mergeinfo__add_prefix_to_catalog(&mergeinfo_catalog, Modified: subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.c Tue Sep 27 16:30:36 2011 @@ -438,16 +438,17 @@ svn_client__get_repos_mergeinfo(svn_ra_s svn_revnum_t rev, svn_mergeinfo_inheritance_t inherit, svn_boolean_t squelch_incapable, - svn_boolean_t validate_inherited_mergeinfo, apr_pool_t *pool) { svn_mergeinfo_catalog_t tgt_mergeinfo_cat; *target_mergeinfo = NULL; - SVN_ERR(svn_client__get_repos_mergeinfo_catalog( - &tgt_mergeinfo_cat, ra_session, rel_path, rev, inherit, - squelch_incapable, FALSE, validate_inherited_mergeinfo, pool, pool)); + SVN_ERR(svn_client__get_repos_mergeinfo_catalog(&tgt_mergeinfo_cat, + ra_session, + rel_path, rev, inherit, + squelch_incapable, FALSE, + pool, pool)); if (tgt_mergeinfo_cat && apr_hash_count(tgt_mergeinfo_cat)) { @@ -471,7 +472,6 @@ svn_client__get_repos_mergeinfo_catalog( svn_mergeinfo_inheritance_t inherit, svn_boolean_t squelch_incapable, svn_boolean_t include_descendants, - svn_boolean_t validate_inherited_mergeinfo, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { @@ -483,9 +483,8 @@ svn_client__get_repos_mergeinfo_catalog( APR_ARRAY_PUSH(rel_paths, const char *) = rel_path; /* Fetch the mergeinfo. */ - err = svn_ra_get_mergeinfo2(ra_session, &repos_mergeinfo_cat, rel_paths, - rev, inherit, validate_inherited_mergeinfo, - include_descendants, result_pool); + err = svn_ra_get_mergeinfo(ra_session, &repos_mergeinfo_cat, rel_paths, + rev, inherit, include_descendants, result_pool); if (err) { if (squelch_incapable && err->apr_err == SVN_ERR_UNSUPPORTED_FEATURE) @@ -687,7 +686,7 @@ svn_client__get_wc_or_repos_mergeinfo_ca SVN_ERR(svn_client__get_repos_mergeinfo_catalog( &target_mergeinfo_cat_repos, ra_session, "", target_rev, inherit, - TRUE, include_descendants, TRUE, + TRUE, include_descendants, result_pool, scratch_pool)); if (target_mergeinfo_cat_repos @@ -1151,7 +1150,7 @@ get_mergeinfo(svn_mergeinfo_catalog_t *m rev = peg_rev; SVN_ERR(svn_client__get_repos_mergeinfo_catalog( mergeinfo_catalog, ra_session, "", rev, svn_mergeinfo_inherited, - FALSE, include_descendants, TRUE, + FALSE, include_descendants, result_pool, scratch_pool)); } else /* ! svn_path_is_url() */ Modified: subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.h (original) +++ subversion/branches/1.7.x/subversion/libsvn_client/mergeinfo.h Tue Sep 27 16:30:36 2011 @@ -166,13 +166,7 @@ svn_client__get_wc_mergeinfo_catalog(svn If there is no mergeinfo available for REL_PATH, or if the server doesn't support a mergeinfo capability and SQUELCH_INCAPABLE is - TRUE, set *TARGET_MERGEINFO to NULL. - - If the mergeinfo for REL_PATH path is inherited, - VALIDATE_INHERITED_MERGEINFO is TRUE, and the server supports - the #SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO capability, - then *TARGET_MERGEINFO will only contain merge source path-revisions - that actually exist in the repository. */ + TRUE, set *TARGET_MERGEINFO to NULL. */ svn_error_t * svn_client__get_repos_mergeinfo(svn_ra_session_t *ra_session, svn_mergeinfo_t *target_mergeinfo, @@ -180,7 +174,6 @@ svn_client__get_repos_mergeinfo(svn_ra_s svn_revnum_t rev, svn_mergeinfo_inheritance_t inherit, svn_boolean_t squelch_incapable, - svn_boolean_t validate_inherited_mergeinfo, apr_pool_t *pool); /* If INCLUDE_DESCENDANTS is FALSE, behave exactly like @@ -202,7 +195,6 @@ svn_client__get_repos_mergeinfo_catalog( svn_mergeinfo_inheritance_t inherit, svn_boolean_t squelch_incapable, svn_boolean_t include_descendants, - svn_boolean_t validate_inherited_mergeinfo, apr_pool_t *result_pool, apr_pool_t *scratch_pool); @@ -233,14 +225,7 @@ svn_client__get_repos_mergeinfo_catalog( If TARGET_WCPATH inherited its mergeinfo from a working copy ancestor or if it was obtained from the repository, set *INHERITED to TRUE, set it - to FALSE otherwise. - - Note: If the repository is contacted to find inherited mergeinfo, then - inherited mergeinfo validation is requested by default (see the - VALIDATE_INHERITED_MERGEINFO parameter to svn_client__get_repos_mergeinfo). - If the caller needs to know if validation actually occurred then it should - check if the server supports the - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO capability. */ + to FALSE otherwise. */ svn_error_t * svn_client__get_wc_or_repos_mergeinfo(svn_mergeinfo_t *target_mergeinfo, svn_boolean_t *inherited, Modified: subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.c Tue Sep 27 16:30:36 2011 @@ -973,22 +973,6 @@ svn_fs_closest_copy(svn_fs_root_t **root } svn_error_t * -svn_fs_get_mergeinfo2(svn_mergeinfo_catalog_t *catalog, - svn_fs_root_t *root, - const apr_array_header_t *paths, - svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, - svn_boolean_t include_descendants, - apr_pool_t *pool) -{ - return svn_error_trace(root->vtable->get_mergeinfo(catalog, root, paths, - inherit, - validate_inherited_mergeinfo, - include_descendants, - pool)); -} - -svn_error_t * svn_fs_get_mergeinfo(svn_mergeinfo_catalog_t *catalog, svn_fs_root_t *root, const apr_array_header_t *paths, @@ -996,24 +980,10 @@ svn_fs_get_mergeinfo(svn_mergeinfo_catal svn_boolean_t include_descendants, apr_pool_t *pool) { - return svn_error_trace(svn_fs_get_mergeinfo2(catalog, root, paths, - inherit, - FALSE, - include_descendants, - pool)); -} - -svn_error_t * -svn_fs_validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo, - svn_fs_t *fs, - svn_mergeinfo_t mergeinfo, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool) -{ - return svn_error_trace(fs->vtable->validate_mergeinfo(validated_mergeinfo, - fs, mergeinfo, - result_pool, - scratch_pool)); + return svn_error_trace(root->vtable->get_mergeinfo(catalog, root, paths, + inherit, + include_descendants, + pool)); } svn_error_t * Modified: subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.h (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs/fs-loader.h Tue Sep 27 16:30:36 2011 @@ -194,11 +194,6 @@ typedef struct fs_vtable_t svn_error_t *(*bdb_set_errcall)(svn_fs_t *fs, void (*handler)(const char *errpfx, char *msg)); - svn_error_t *(*validate_mergeinfo)(svn_mergeinfo_t *validated_mergeinfo, - svn_fs_t *fs, - svn_mergeinfo_t mergeinfo, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); } fs_vtable_t; @@ -331,7 +326,6 @@ typedef struct root_vtable_t svn_fs_root_t *root, const apr_array_header_t *paths, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool); } root_vtable_t; Modified: subversion/branches/1.7.x/subversion/libsvn_fs_base/fs.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs_base/fs.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs_base/fs.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs_base/fs.c Tue Sep 27 16:30:36 2011 @@ -496,7 +496,6 @@ static fs_vtable_t fs_vtable = { svn_fs_base__get_lock, svn_fs_base__get_locks, base_bdb_set_errcall, - svn_fs_base__validate_mergeinfo, }; /* Where the format number is stored. */ Modified: subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.c Tue Sep 27 16:30:36 2011 @@ -4955,128 +4955,6 @@ base_node_origin_rev(svn_revnum_t *revis /* Mergeinfo Queries */ -/* Implements svn_fs_validate_mergeinfo. */ -svn_error_t * -svn_fs_base__validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo, - svn_fs_t *fs, - svn_mergeinfo_t mergeinfo, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool) -{ - svn_mergeinfo_t filtered_mergeinfo; - apr_hash_t *rev_to_sources; - apr_hash_index_t *hi; - apr_pool_t *iterpool; - - /* A couple easy outs. */ - if (mergeinfo == NULL) - { - *validated_mergeinfo = NULL; - return SVN_NO_ERROR; - } - else if (apr_hash_count(mergeinfo) == 0) - { - *validated_mergeinfo = apr_hash_make(result_pool); - return SVN_NO_ERROR; - } - - filtered_mergeinfo = apr_hash_make(scratch_pool); - rev_to_sources = apr_hash_make(scratch_pool); - - /* Since svn_fs_check_path needs an svn_fs_root_t based on a revision, - we convert MERGEINFO into a mapping of revisions to a hash of source - paths for efficiency. */ - for (hi = apr_hash_first(scratch_pool, mergeinfo); - hi; - hi = apr_hash_next(hi)) - { - const char *path = svn__apr_hash_index_key(hi); - apr_array_header_t *rangelist = svn__apr_hash_index_val(hi); - int i; - - for (i = 0; i < rangelist->nelts; i++) - { - svn_merge_range_t *range = - APR_ARRAY_IDX(rangelist, i, svn_merge_range_t *); - svn_revnum_t j; - - for (j = range->start + 1; j <= range->end; j++) - { - apr_hash_t *paths_for_rev = - apr_hash_get(rev_to_sources, &j, sizeof(svn_revnum_t)); - - /* No hash associated with this rev yet? */ - if (!paths_for_rev) - { - svn_revnum_t *rev = apr_palloc(scratch_pool, sizeof(*rev)); - - *rev = j; - paths_for_rev = apr_hash_make(scratch_pool); - apr_hash_set(rev_to_sources, rev, - sizeof(svn_revnum_t), paths_for_rev); - } - - apr_hash_set(paths_for_rev, path, APR_HASH_KEY_STRING, path); - } - } - } - - iterpool = svn_pool_create(scratch_pool); - - /* Validate the rev->source MERGEINFO equivalent hash, building the - validated mergeinfo as we go. */ - for (hi = apr_hash_first(scratch_pool, rev_to_sources); - hi; - hi = apr_hash_next(hi)) - { - const svn_revnum_t *rev = svn__apr_hash_index_key(hi); - apr_hash_t *paths = svn__apr_hash_index_val(hi); - apr_pool_t *inner_iterpool; - apr_hash_index_t *hi2; - svn_node_kind_t kind; - svn_fs_root_t *mergeinfo_rev_root; - - svn_pool_clear(iterpool); - inner_iterpool = svn_pool_create(iterpool); - - SVN_ERR(svn_fs_base__revision_root(&mergeinfo_rev_root, fs, - *rev, iterpool)); - - for (hi2 = apr_hash_first(iterpool, paths); - hi2; - hi2 = apr_hash_next(hi2)) - { - const char *path = svn__apr_hash_index_key(hi2); - - svn_pool_clear(inner_iterpool); - SVN_ERR(base_check_path(&kind, mergeinfo_rev_root, - path, inner_iterpool)); - if (kind == svn_node_none) - { - apr_hash_set(paths, path, APR_HASH_KEY_STRING, NULL); - } - else - { - svn_mergeinfo_t good_mergeinfo_fragment; - const char *mergeinfo_str = - apr_psprintf(inner_iterpool, "%s:%ld", path, *rev); - - SVN_ERR(svn_mergeinfo_parse(&good_mergeinfo_fragment, - mergeinfo_str, scratch_pool)); - SVN_ERR(svn_mergeinfo_merge(filtered_mergeinfo, - good_mergeinfo_fragment, - scratch_pool)); - } - } - svn_pool_destroy(inner_iterpool); - } - - svn_pool_destroy(iterpool); - *validated_mergeinfo = svn_mergeinfo_dup(filtered_mergeinfo, result_pool); - return SVN_NO_ERROR; -} - - /* Examine directory NODE's immediately children for mergeinfo. For those which have explicit mergeinfo, add their mergeinfo to @@ -5255,14 +5133,12 @@ crawl_directory_for_mergeinfo(svn_fs_t * /* Calculate the mergeinfo for PATH under revision ROOT using inheritance type INHERIT. Set *MERGEINFO to the mergeinfo, or to - NULL if there is none. If *MERGEINFO is inherited set *INHERITED - to true, false otherwise. Results are allocated in POOL; TRAIL->POOL + NULL if there is none. Results are allocated in POOL; TRAIL->pool is used for temporary allocations. */ struct get_mergeinfo_for_path_baton { svn_mergeinfo_t *mergeinfo; - svn_boolean_t *inherited; svn_fs_root_t *root; const char *path; svn_mergeinfo_inheritance_t inherit; @@ -5280,7 +5156,6 @@ txn_body_get_mergeinfo_for_path(void *ba dag_node_t *node = NULL; *(args->mergeinfo) = NULL; - *(args->inherited) = FALSE; SVN_ERR(open_path(&parent_path, args->root, args->path, 0, NULL, trail, trail->pool)); @@ -5375,7 +5250,6 @@ txn_body_get_mergeinfo_for_path(void *ba parent_path, nearest_ancestor, trail->pool), args->pool)); - *(args->inherited) = TRUE; } return SVN_NO_ERROR; @@ -5408,17 +5282,14 @@ txn_body_get_node_mergeinfo_stats(void * } -/* Get the mergeinfo for a set of paths, returned in *MERGEINFO_CATALOG. - If the mergeinfo for any path is inherited and VALIDATE_INHERITED_MERGEINFO - is true, then the mergeinfo for that path in *MERGEINFO_CATALOG will only - contain path-revs that actually exist in repository. Returned values are - allocated in POOL, while temporary values are allocated in a sub-pool. */ +/* Get the mergeinfo for a set of paths, returned in + *MERGEINFO_CATALOG. Returned values are allocated in POOL, while + temporary values are allocated in a sub-pool. */ static svn_error_t * get_mergeinfos_for_paths(svn_fs_root_t *root, svn_mergeinfo_catalog_t *mergeinfo_catalog, const apr_array_header_t *paths, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool) { @@ -5429,7 +5300,6 @@ get_mergeinfos_for_paths(svn_fs_root_t * for (i = 0; i < paths->nelts; i++) { svn_mergeinfo_t path_mergeinfo; - svn_boolean_t inherited; struct get_mergeinfo_for_path_baton gmfp_args; const char *path = APR_ARRAY_IDX(paths, i, const char *); @@ -5439,7 +5309,6 @@ get_mergeinfos_for_paths(svn_fs_root_t * /* Get the mergeinfo for PATH itself. */ gmfp_args.mergeinfo = &path_mergeinfo; - gmfp_args.inherited = &inherited; gmfp_args.root = root; gmfp_args.path = path; gmfp_args.inherit = inherit; @@ -5448,16 +5317,9 @@ get_mergeinfos_for_paths(svn_fs_root_t * txn_body_get_mergeinfo_for_path, &gmfp_args, FALSE, iterpool)); if (path_mergeinfo) - { - if (inherited && validate_inherited_mergeinfo) - SVN_ERR(svn_fs_base__validate_mergeinfo(&path_mergeinfo, root->fs, - path_mergeinfo, pool, - iterpool)); - apr_hash_set(result_catalog, apr_pstrdup(pool, path), APR_HASH_KEY_STRING, path_mergeinfo); - } /* If we're including descendants, do so. */ if (include_descendants) @@ -5500,7 +5362,6 @@ base_get_mergeinfo(svn_mergeinfo_catalog svn_fs_root_t *root, const apr_array_header_t *paths, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool) { @@ -5514,8 +5375,8 @@ base_get_mergeinfo(svn_mergeinfo_catalog /* Retrieve a path -> mergeinfo mapping. */ return get_mergeinfos_for_paths(root, catalog, paths, - inherit, validate_inherited_mergeinfo, - include_descendants, pool); + inherit, include_descendants, + pool); } Modified: subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.h (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs_base/tree.h Tue Sep 27 16:30:36 2011 @@ -91,14 +91,6 @@ svn_error_t *svn_fs_base__get_path_creat trail_t *trail, apr_pool_t *pool); -/* Implements svn_fs_validate_mergeinfo. */ -svn_error_t * -svn_fs_base__validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo, - svn_fs_t *fs, - svn_mergeinfo_t mergeinfo, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - #ifdef __cplusplus } Modified: subversion/branches/1.7.x/subversion/libsvn_fs_fs/fs.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs_fs/fs.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs_fs/fs.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs_fs/fs.c Tue Sep 27 16:30:36 2011 @@ -159,7 +159,6 @@ static fs_vtable_t fs_vtable = { svn_fs_fs__get_lock, svn_fs_fs__get_locks, fs_set_errcall, - svn_fs_fs__validate_mergeinfo, }; Modified: subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.c Tue Sep 27 16:30:36 2011 @@ -3352,127 +3352,6 @@ assemble_history(svn_fs_t *fs, /* mergeinfo queries */ -/* Implements svn_fs_validate_mergeinfo. */ -svn_error_t * -svn_fs_fs__validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo, - svn_fs_t *fs, - svn_mergeinfo_t mergeinfo, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool) -{ - svn_mergeinfo_t filtered_mergeinfo; - apr_hash_t *rev_to_sources; - apr_hash_index_t *hi; - apr_pool_t *iterpool; - - /* A couple easy outs. */ - if (mergeinfo == NULL) - { - *validated_mergeinfo = NULL; - return SVN_NO_ERROR; - } - else if (apr_hash_count(mergeinfo) == 0) - { - *validated_mergeinfo = apr_hash_make(result_pool); - return SVN_NO_ERROR; - } - - filtered_mergeinfo = apr_hash_make(scratch_pool); - rev_to_sources = apr_hash_make(scratch_pool); - - /* Since svn_fs_check_path needs an svn_fs_root_t based on a revision, - we convert MERGEINFO into a mapping of revisions to a hash of source - paths for efficiency. */ - for (hi = apr_hash_first(scratch_pool, mergeinfo); - hi; - hi = apr_hash_next(hi)) - { - const char *path = svn__apr_hash_index_key(hi); - apr_array_header_t *rangelist = svn__apr_hash_index_val(hi); - int i; - - for (i = 0; i < rangelist->nelts; i++) - { - svn_merge_range_t *range = - APR_ARRAY_IDX(rangelist, i, svn_merge_range_t *); - svn_revnum_t j; - - for (j = range->start + 1; j <= range->end; j++) - { - apr_hash_t *paths_for_rev = - apr_hash_get(rev_to_sources, &j, sizeof(svn_revnum_t)); - - /* No hash associated with this rev yet? */ - if (!paths_for_rev) - { - svn_revnum_t *rev = apr_palloc(scratch_pool, sizeof(*rev)); - - *rev = j; - paths_for_rev = apr_hash_make(scratch_pool); - apr_hash_set(rev_to_sources, rev, - sizeof(svn_revnum_t), paths_for_rev); - } - - apr_hash_set(paths_for_rev, path, APR_HASH_KEY_STRING, path); - } - } - } - - iterpool = svn_pool_create(scratch_pool); - - /* Validate the rev->source MERGEINFO equivalent hash, building the - validated mergeinfo as we go. */ - for (hi = apr_hash_first(scratch_pool, rev_to_sources); - hi; - hi = apr_hash_next(hi)) - { - const svn_revnum_t *rev = svn__apr_hash_index_key(hi); - apr_hash_t *paths = svn__apr_hash_index_val(hi); - apr_pool_t *inner_iterpool; - apr_hash_index_t *hi2; - svn_node_kind_t kind; - svn_fs_root_t *mergeinfo_rev_root; - - svn_pool_clear(iterpool); - inner_iterpool = svn_pool_create(iterpool); - - SVN_ERR(svn_fs_fs__revision_root(&mergeinfo_rev_root, fs, - *rev, iterpool)); - - for (hi2 = apr_hash_first(iterpool, paths); - hi2; - hi2 = apr_hash_next(hi2)) - { - const char *path = svn__apr_hash_index_key(hi2); - - svn_pool_clear(inner_iterpool); - SVN_ERR(svn_fs_fs__check_path(&kind, mergeinfo_rev_root, - path, inner_iterpool)); - if (kind == svn_node_none) - { - apr_hash_set(paths, path, APR_HASH_KEY_STRING, NULL); - } - else - { - svn_mergeinfo_t good_mergeinfo_fragment; - const char *mergeinfo_str = - apr_psprintf(inner_iterpool, "%s:%ld", path, *rev); - - SVN_ERR(svn_mergeinfo_parse(&good_mergeinfo_fragment, - mergeinfo_str, scratch_pool)); - SVN_ERR(svn_mergeinfo_merge(filtered_mergeinfo, - good_mergeinfo_fragment, - scratch_pool)); - } - } - svn_pool_destroy(inner_iterpool); - } - - svn_pool_destroy(iterpool); - *validated_mergeinfo = svn_mergeinfo_dup(filtered_mergeinfo, result_pool); - return SVN_NO_ERROR; -} - /* DIR_DAG is a directory DAG node which has mergeinfo in its descendants. This function iterates over its children. For each child with immediate mergeinfo, it adds its mergeinfo to @@ -3575,9 +3454,7 @@ crawl_directory_dag_for_mergeinfo(svn_fs /* Calculates the mergeinfo for PATH under REV_ROOT using inheritance type INHERIT. Returns it in *MERGEINFO, or NULL if there is none. - If *MERGEINFO is inherited and VALIDATE_INHERITED_MERGEINFO is true, - then *MERGEINFO will only contain path-revs that actually exist in - repository. The result is allocated in RESULT_POOL; SCRATCH_POOL is + The result is allocated in RESULT_POOL; SCRATCH_POOL is used for temporary allocations. */ static svn_error_t * @@ -3585,7 +3462,6 @@ get_mergeinfo_for_path(svn_mergeinfo_t * svn_fs_root_t *rev_root, const char *path, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, apr_pool_t *result_pool, apr_pool_t *scratch_pool) { @@ -3636,6 +3512,8 @@ get_mergeinfo_for_path(svn_mergeinfo_t * } } + svn_pool_destroy(iterpool); + SVN_ERR(svn_fs_fs__dag_get_proplist(&proplist, nearest_ancestor->node, scratch_pool)); mergeinfo_string = apr_hash_get(proplist, SVN_PROP_MERGEINFO, @@ -3662,7 +3540,6 @@ get_mergeinfo_for_path(svn_mergeinfo_t * err = NULL; *mergeinfo = NULL; } - svn_pool_destroy(iterpool); return svn_error_trace(err); } } @@ -3684,14 +3561,8 @@ get_mergeinfo_for_path(svn_mergeinfo_t * parent_path, nearest_ancestor, scratch_pool), result_pool)); - - if (validate_inherited_mergeinfo) - SVN_ERR(svn_fs_fs__validate_mergeinfo(mergeinfo, rev_root->fs, - *mergeinfo, result_pool, - iterpool)); } - svn_pool_destroy(iterpool); return SVN_NO_ERROR; } @@ -3724,17 +3595,13 @@ add_descendant_mergeinfo(svn_mergeinfo_c /* Get the mergeinfo for a set of paths, returned in - *MERGEINFO_CATALOG. If the mergeinfo for any path is inherited - and VALIDATE_INHERITED_MERGEINFO is true, then the mergeinfo for - that path in *MERGEINFO_CATALOG will only contain path-revs that - actually exist in repository. Returned values are allocated in + *MERGEINFO_CATALOG. Returned values are allocated in POOL, while temporary values are allocated in a sub-pool. */ static svn_error_t * get_mergeinfos_for_paths(svn_fs_root_t *root, svn_mergeinfo_catalog_t *mergeinfo_catalog, const apr_array_header_t *paths, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool) { @@ -3751,8 +3618,7 @@ get_mergeinfos_for_paths(svn_fs_root_t * svn_pool_clear(iterpool); err = get_mergeinfo_for_path(&path_mergeinfo, root, path, - inherit, validate_inherited_mergeinfo, - pool, iterpool); + inherit, pool, iterpool); if (err) { if (err->apr_err == SVN_ERR_MERGEINFO_PARSE_ERROR) @@ -3787,7 +3653,6 @@ fs_get_mergeinfo(svn_mergeinfo_catalog_t svn_fs_root_t *root, const apr_array_header_t *paths, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool) { @@ -3807,7 +3672,7 @@ fs_get_mergeinfo(svn_mergeinfo_catalog_t /* Retrieve a path -> mergeinfo hash mapping. */ return get_mergeinfos_for_paths(root, catalog, paths, - inherit, validate_inherited_mergeinfo, + inherit, include_descendants, pool); } Modified: subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.h (original) +++ subversion/branches/1.7.x/subversion/libsvn_fs_fs/tree.h Tue Sep 27 16:30:36 2011 @@ -71,14 +71,6 @@ svn_fs_fs__node_created_rev(svn_revnum_t const char *path, apr_pool_t *pool); -/* Implements svn_fs_validate_mergeinfo. */ -svn_error_t * -svn_fs_fs__validate_mergeinfo(svn_mergeinfo_t *validated_mergeinfo, - svn_fs_t *fs, - svn_mergeinfo_t mergeinfo, - apr_pool_t *result_pool, - apr_pool_t *scratch_pool); - #ifdef __cplusplus } #endif /* __cplusplus */ Modified: subversion/branches/1.7.x/subversion/libsvn_ra/deprecated.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_ra/deprecated.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_ra/deprecated.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_ra/deprecated.c Tue Sep 27 16:30:36 2011 @@ -417,17 +417,3 @@ svn_error_t *svn_ra_do_status(svn_ra_ses SVN_DEPTH_INFINITY_OR_IMMEDIATES(recurse), status_editor, status_baton, pool); } - -svn_error_t *svn_ra_get_mergeinfo(svn_ra_session_t *session, - svn_mergeinfo_catalog_t *catalog, - const apr_array_header_t *paths, - svn_revnum_t revision, - svn_mergeinfo_inheritance_t inherit, - svn_boolean_t include_descendants, - apr_pool_t *pool) -{ - return svn_error_trace(svn_ra_get_mergeinfo2(session, catalog, paths, - revision, inherit, FALSE, - include_descendants, pool)); -} - Modified: subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.c Tue Sep 27 16:30:36 2011 @@ -766,14 +766,13 @@ svn_error_t *svn_ra_get_dir2(svn_ra_sess path, revision, dirent_fields, pool); } -svn_error_t *svn_ra_get_mergeinfo2(svn_ra_session_t *session, - svn_mergeinfo_catalog_t *catalog, - const apr_array_header_t *paths, - svn_revnum_t revision, - svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, - svn_boolean_t include_descendants, - apr_pool_t *pool) +svn_error_t *svn_ra_get_mergeinfo(svn_ra_session_t *session, + svn_mergeinfo_catalog_t *catalog, + const apr_array_header_t *paths, + svn_revnum_t revision, + svn_mergeinfo_inheritance_t inherit, + svn_boolean_t include_descendants, + apr_pool_t *pool) { svn_error_t *err; int i; @@ -795,7 +794,6 @@ svn_error_t *svn_ra_get_mergeinfo2(svn_r return session->vtable->get_mergeinfo(session, catalog, paths, revision, inherit, - validate_inherited_mergeinfo, include_descendants, pool); } Modified: subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.h (original) +++ subversion/branches/1.7.x/subversion/libsvn_ra/ra_loader.h Tue Sep 27 16:30:36 2011 @@ -125,13 +125,12 @@ typedef struct svn_ra__vtable_t { svn_revnum_t revision, apr_uint32_t dirent_fields, apr_pool_t *pool); - /* See svn_ra_get_mergeinfo2(). */ + /* See svn_ra_get_mergeinfo(). */ svn_error_t *(*get_mergeinfo)(svn_ra_session_t *session, svn_mergeinfo_catalog_t *mergeinfo, const apr_array_header_t *paths, svn_revnum_t revision, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_merged_revisions, apr_pool_t *pool); /* See svn_ra_do_update2(). */ Modified: subversion/branches/1.7.x/subversion/libsvn_ra_local/ra_plugin.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_ra_local/ra_plugin.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_ra_local/ra_plugin.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_ra_local/ra_plugin.c Tue Sep 27 16:30:36 2011 @@ -733,7 +733,6 @@ svn_ra_local__get_mergeinfo(svn_ra_sessi const apr_array_header_t *paths, svn_revnum_t revision, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool) { @@ -750,10 +749,8 @@ svn_ra_local__get_mergeinfo(svn_ra_sessi svn_fspath__join(sess->fs_path->data, relative_path, pool); } - SVN_ERR(svn_repos_fs_get_mergeinfo2(&tmp_catalog, sess->repos, abs_paths, - revision, inherit, - validate_inherited_mergeinfo, - include_descendants, + SVN_ERR(svn_repos_fs_get_mergeinfo(&tmp_catalog, sess->repos, abs_paths, + revision, inherit, include_descendants, NULL, NULL, pool)); if (apr_hash_count(tmp_catalog) > 0) SVN_ERR(svn_mergeinfo__remove_prefix_from_catalog(catalog, @@ -1455,9 +1452,7 @@ svn_ra_local__has_capability(svn_ra_sess { *has = TRUE; } - else if ((strcmp(capability, SVN_RA_CAPABILITY_MERGEINFO) == 0) - || (strcmp(capability, - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO) == 0)) + else if (strcmp(capability, SVN_RA_CAPABILITY_MERGEINFO) == 0) { /* With mergeinfo, the code's capabilities may not reflect the repository's, so inquire further. */ Modified: subversion/branches/1.7.x/subversion/libsvn_ra_neon/mergeinfo.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_ra_neon/mergeinfo.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_ra_neon/mergeinfo.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_ra_neon/mergeinfo.c Tue Sep 27 16:30:36 2011 @@ -163,7 +163,6 @@ svn_ra_neon__get_mergeinfo(svn_ra_sessio const apr_array_header_t *paths, svn_revnum_t revision, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool) { @@ -195,14 +194,6 @@ svn_ra_neon__get_mergeinfo(svn_ra_sessio "", svn_inheritance_to_word(inherit))); - if (validate_inherited_mergeinfo) - { - /* Send it only if true; server will default to "no". */ - svn_stringbuf_appendcstr(request_body, - "yes" - ""); - } - if (include_descendants) { /* Send it only if true; server will default to "no". */ Modified: subversion/branches/1.7.x/subversion/libsvn_ra_neon/options.c URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_ra_neon/options.c?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_ra_neon/options.c (original) +++ subversion/branches/1.7.x/subversion/libsvn_ra_neon/options.c Tue Sep 27 16:30:36 2011 @@ -198,16 +198,11 @@ parse_capabilities(ne_request *req, apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_DEPTH, APR_HASH_KEY_STRING, capability_yes); - /* For mergeinfo capabilities, the server doesn't know what repository - we're referring to, so it can't just say capability_yes. */ if (svn_cstring_match_list(SVN_DAV_NS_DAV_SVN_MERGEINFO, vals)) + /* The server doesn't know what repository we're referring + to, so it can't just say capability_yes. */ apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_MERGEINFO, APR_HASH_KEY_STRING, capability_server_yes); - if (svn_cstring_match_list(SVN_DAV_NS_DAV_SVN_MERGEINFO_VALIDATION, - vals)) - apr_hash_set(ras->capabilities, - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO, - APR_HASH_KEY_STRING, capability_server_yes); if (svn_cstring_match_list(SVN_DAV_NS_DAV_SVN_LOG_REVPROPS, vals)) apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_LOG_REVPROPS, @@ -403,9 +398,7 @@ svn_ra_neon__has_capability(svn_ra_sessi you change something here, check there as well. */ if (cap_result == capability_server_yes) { - if ((strcmp(capability, SVN_RA_CAPABILITY_MERGEINFO) == 0) - || (strcmp(capability, - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO) == 0)) + if (strcmp(capability, SVN_RA_CAPABILITY_MERGEINFO) == 0) { /* Handle mergeinfo specially. Mergeinfo depends on the repository as well as the server, but the server routine @@ -418,15 +411,12 @@ svn_ra_neon__has_capability(svn_ra_sessi support mergeinfo. */ svn_mergeinfo_catalog_t ignored; svn_error_t *err; - svn_boolean_t validate_inherited_mergeinfo = FALSE; apr_array_header_t *paths = apr_array_make(pool, 1, sizeof(char *)); APR_ARRAY_PUSH(paths, const char *) = ""; err = svn_ra_neon__get_mergeinfo(session, &ignored, paths, 0, - FALSE, - validate_inherited_mergeinfo, - FALSE, pool); + FALSE, FALSE, pool); if (err) { @@ -450,14 +440,9 @@ svn_ra_neon__has_capability(svn_ra_sessi else cap_result = capability_yes; - if (strcmp(capability, SVN_RA_CAPABILITY_MERGEINFO) == 0) apr_hash_set(ras->capabilities, SVN_RA_CAPABILITY_MERGEINFO, APR_HASH_KEY_STRING, cap_result); - else - apr_hash_set(ras->capabilities, - SVN_RA_CAPABILITY_VALIDATE_INHERITED_MERGEINFO, - APR_HASH_KEY_STRING, cap_result); } else { Modified: subversion/branches/1.7.x/subversion/libsvn_ra_neon/ra_neon.h URL: http://svn.apache.org/viewvc/subversion/branches/1.7.x/subversion/libsvn_ra_neon/ra_neon.h?rev=1176459&r1=1176458&r2=1176459&view=diff ============================================================================== --- subversion/branches/1.7.x/subversion/libsvn_ra_neon/ra_neon.h (original) +++ subversion/branches/1.7.x/subversion/libsvn_ra_neon/ra_neon.h Tue Sep 27 16:30:36 2011 @@ -308,7 +308,6 @@ svn_error_t * svn_ra_neon__get_mergeinfo const apr_array_header_t *paths, svn_revnum_t revision, svn_mergeinfo_inheritance_t inherit, - svn_boolean_t validate_inherited_mergeinfo, svn_boolean_t include_descendants, apr_pool_t *pool); @@ -860,8 +859,7 @@ enum { ELEM_has_children, ELEM_merged_revision, ELEM_deleted_rev_report, - ELEM_validate_inherited_mergeinfo, - ELEM_subtractive_merge, + ELEM_subtractive_merge }; /* ### docco */