On Tue, Apr 28, 2009 at 01:16, Paul T. Burba <pburba_at_collab.net> wrote:
>...
> +++ trunk/subversion/libsvn_client/merge.c    Mon Apr 27 16:16:50 2009     (r37491)
>...
> @@ -2847,7 +2902,8 @@ get_full_mergeinfo(svn_mergeinfo_t *reco
> Â Â function must have previously been called for PARENT.
> Â */
> Â static svn_error_t *
> -filter_merged_revisions(svn_client__merge_path_t *child,
> +filter_merged_revisions(svn_client__merge_path_t *parent,
> + Â Â Â Â Â Â Â Â Â Â Â Â svn_client__merge_path_t *child,
> Â Â Â Â Â Â Â Â Â Â Â Â const svn_wc_entry_t *entry,
> Â Â Â Â Â Â Â Â Â Â Â Â const char *mergeinfo_path,
> Â Â Â Â Â Â Â Â Â Â Â Â svn_mergeinfo_t target_mergeinfo,
> @@ -2942,12 +2998,33 @@ filter_merged_revisions(svn_client__merg
> Â Â Â Â Â /* If we haven't already found CHILD->IMPLICIT_MERGEINFO then
> Â Â Â Â Â Â Â contact the server to get it. */
> Â Â Â Â Â if (! (child->implicit_mergeinfo))
> - Â Â Â Â Â Â SVN_ERR(get_full_mergeinfo(NULL, &(child->implicit_mergeinfo),
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â entry, NULL, svn_mergeinfo_inherited,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ra_session, child->path,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MAX(revision1, revision2),
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MIN(revision1, revision2),
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â adm_access, ctx, subpool));
> + Â Â Â Â Â Â {
> + Â Â Â Â Â Â Â /* If CHILD has explicit mergeinfo only because its parent has
> + Â Â Â Â Â Â Â Â non-inheritable mergeinfo (see criteria 3 in
> + Â Â Â Â Â Â Â Â get_mergeinfo_paths() then CHILD can inherit PARENT's
> + Â Â Â Â Â Â Â Â implicit mergeinfo and we can avoid contacting the server.
> +
> + Â Â Â Â Â Â Â Â If child->child_of_noninheritable is true, it implies that
> + Â Â Â Â Â Â Â Â PARENT must exist per the rules of get_mergeinfo_paths(). */
> + Â Â Â Â Â Â Â if (child->child_of_noninheritable)
> + Â Â Â Â Â Â Â Â SVN_ERR(inherit_implicit_mereginfo_form_parent(parent,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â child,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â revision1,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â revision2,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ra_session,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â adm_access,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ctx,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â pool));
> + Â Â Â Â Â Â Â else
> + Â Â Â Â Â Â Â Â SVN_ERR(get_full_mergeinfo(NULL,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &(child->implicit_mergeinfo),
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â entry, NULL,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â svn_mergeinfo_inherited,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ra_session, child->path,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MAX(revision1, revision2),
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MIN(revision1, revision2),
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â adm_access, ctx, subpool));
> + Â Â Â Â Â Â }
>
> Â Â Â Â Â target_implicit_rangelist = apr_hash_get(child->implicit_mergeinfo,
> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â mergeinfo_path,
> @@ -3029,12 +3106,33 @@ filter_merged_revisions(svn_client__merg
> Â Â Â Â Â Â Â ranges are represented there. Â If we don't already have
> Â Â Â Â Â Â Â CHILD->IMPLICIT_MERGEINFO then get it now. */
> Â Â Â Â Â if (! (child->implicit_mergeinfo))
> - Â Â Â Â Â Â SVN_ERR(get_full_mergeinfo(NULL, &(child->implicit_mergeinfo),
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â entry, NULL, svn_mergeinfo_inherited,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ra_session, child->path,
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MAX(revision1, revision2),
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MIN(revision1, revision2),
> - Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â adm_access, ctx, pool));
> + Â Â Â Â Â Â {
> + Â Â Â Â Â Â Â /* If CHILD has explicit mergeinfo only because its parent has
> + Â Â Â Â Â Â Â Â non-inheritable mergeinfo (see criteria 3 in
> + Â Â Â Â Â Â Â Â get_mergeinfo_paths() then CHILD can inherit PARENT's
> + Â Â Â Â Â Â Â Â implicit mergeinfo and we can avoid contacting the server.
> +
> + Â Â Â Â Â Â Â Â If child->child_of_noninheritable is true, it implies that
> + Â Â Â Â Â Â Â Â PARENT must exist per the rules of get_mergeinfo_paths(). */
> + Â Â Â Â Â Â Â if (child->child_of_noninheritable)
> + Â Â Â Â Â Â Â Â SVN_ERR(inherit_implicit_mereginfo_form_parent(parent,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â child,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â revision1,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â revision2,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ra_session,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â adm_access,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ctx,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â pool));
> + Â Â Â Â Â Â Â else
> + Â Â Â Â Â Â Â Â SVN_ERR(get_full_mergeinfo(NULL,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â &(child->implicit_mergeinfo),
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â entry, NULL,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â svn_mergeinfo_inherited,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ra_session, child->path,
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MAX(revision1, revision2),
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â MIN(revision1, revision2),
> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â adm_access, ctx, pool));
> + Â Â Â Â Â Â }
The above couple blocks of code are *exactly* the same.
I see no rationale for condoning this for a backport. I don't know if
this is a single instance of the merge code bloat, or if it is
indicative. But we shouldn't see duplicative code like this.
Stop the bloat.
-g
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2073630
Received on 2009-05-06 01:06:04 CEST