subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hwri...@apache.org
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 GMT
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
                                         "</S:inherit>",
                                         svn_inheritance_to_word(inherit)));
 
-  if (validate_inherited_mergeinfo)
-    {
-      /* Send it only if true; server will default to "no". */
-      svn_stringbuf_appendcstr(request_body,
-                               "<S:" SVN_DAV__VALIDATE_INHERITED ">yes"
-                               "</S:" SVN_DAV__VALIDATE_INHERITED ">");
-    }
-
   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 */



Mime
View raw message