> +
> + /* Renumber mergeinfo rangelist. */
> + for (i = 0; i < ((apr_array_header_t *)rangelist)->nelts; i++)
> + {
> + struct revmap_t *revmap_start;
> + struct revmap_t *revmap_end;
> + svn_merge_range_t *range;
> +
> + range = APR_ARRAY_IDX((apr_array_header_t *)rangelist, i,
> + svn_merge_range_t *);
> + revmap_start = apr_hash_get(rb->pb->renumber_history, &range->start,
> + sizeof(svn_revnum_t));
> + revmap_end = apr_hash_get(rb->pb->renumber_history, &range->end,
> + sizeof(svn_revnum_t));
> + range->start = revmap_start->rev;
> + range->end = revmap_end->rev;
> + }
>
>
This can be faulty, Consider the following scenario,
/src has changes in r84, r89, r92
/target has a mergeinfo of
/src:85-100 (That is it still has r84 *unmerged*)
/drop is deleted at r85
When we run it on a dump which exclues '/drop', the mergeinfo
/src:85-100 would get changed to /src:renum(85)-renum(100)
renum(85) is rev corresponding to r84(which is a last live revision) and
hence it will be faulty enough to have r84 merged.
We need error out if 'revmap_start->was_dropped' unless user invokes
with the 'skip' option, then we need to skip this merge range.
This makes me to think we should rename the skip option to
'--skip-missing-merges' instead of '--skip-missing-merge-sources'.
With regards
Kamesh Jayachandran
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Nov 16 13:23:54 2007