You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2010/05/19 20:05:01 UTC
svn commit: r946317 - in /subversion/trunk/subversion: libsvn_client/merge.c
tests/cmdline/merge_tests.py
Author: pburba
Date: Wed May 19 18:05:01 2010
New Revision: 946317
URL: http://svn.apache.org/viewvc?rev=946317&view=rev
Log:
Fix issue #3640 'moved target breaks reintegrate merge'.
* subversion/libsvn_client/merge.c
(calculate_left_hand_side): Don't assume the reintegrate target hasn't
been moved since the reintegrate source was branched from it.
* subversion/tests/cmdline/merge_tests.py
(basic_reintegrate): Remove XFail comment.
(test_list): Remove XFail from basic_reintegrate.
Modified:
subversion/trunk/subversion/libsvn_client/merge.c
subversion/trunk/subversion/tests/cmdline/merge_tests.py
Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=946317&r1=946316&r2=946317&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Wed May 19 18:05:01 2010
@@ -9525,20 +9525,32 @@ calculate_left_hand_side(const char **ur
/* We've previously merged some or all of the target, up to
youngest_merged_rev, from the target to the source. Set *URL_LEFT
and *REV_LEFT to cover the youngest part of this range. */
- svn_opt_revision_t peg_revision;
+ svn_opt_revision_t peg_revision, youngest_rev, unspecified_rev;
+ svn_opt_revision_t *start_revision;
const char *youngest_url;
+ const char *old_url;
peg_revision.kind = svn_opt_revision_number;
- peg_revision.value.number = youngest_merged_rev;
+ peg_revision.value.number = target_rev;
+
+ youngest_rev.kind = svn_opt_revision_number;
+ youngest_rev.value.number = youngest_merged_rev;
+
+ unspecified_rev.kind = svn_opt_revision_unspecified;
+
+ *rev_left = youngest_rev.value.number;
+
+ /* Get the URL of the target_url@youngest_merged_rev. */
+ SVN_ERR(svn_ra_get_session_url(ra_session, &old_url, subpool));
+ SVN_ERR(svn_ra_reparent(ra_session, target_url, subpool));
+ SVN_ERR(svn_client__repos_locations(&youngest_url, &start_revision,
+ NULL, NULL, ra_session,
+ target_url, &peg_revision,
+ &youngest_rev, &unspecified_rev,
+ ctx, subpool));
- *rev_left = youngest_merged_rev;
- SVN_ERR(svn_client__derive_location(
- &youngest_url, NULL,
- svn_path_url_add_component2(source_repos_root,
- target_repos_rel_path,
- subpool),
- &peg_revision, ra_session, ctx, subpool, subpool));
*url_left = apr_pstrdup(pool, youngest_url);
+ SVN_ERR(svn_ra_reparent(ra_session, old_url, subpool));
}
svn_pool_destroy(subpool);
Modified: subversion/trunk/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_tests.py?rev=946317&r1=946316&r2=946317&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_tests.py Wed May 19 18:05:01 2010
@@ -10603,22 +10603,6 @@ def basic_reintegrate(sbox):
expected_status.tweak(wc_rev=9)
k_expected_disk.tweak('', props={SVN_PROP_MERGEINFO : '/A_COPY:2-9'})
expected_skip = wc.State(A_MOVED_path, {})
- # This test is currently marked as XFail as the reintegrate fails:
- #
- # >svn merge ^^/A_COPY A_MOVED --reintegrate
- # ..\..\..\subversion\svn\merge-cmd.c:358: (apr_err=160013)
- # ..\..\..\subversion\libsvn_client\merge.c:9777: (apr_err=160013)
- # ..\..\..\subversion\libsvn_client\merge.c:9747: (apr_err=160013)
- # ..\..\..\subversion\libsvn_client\merge.c:9654: (apr_err=160013)
- # ..\..\..\subversion\libsvn_client\ra.c:753: (apr_err=160013)
- # ..\..\..\subversion\libsvn_client\mergeinfo.c:740: (apr_err=160013)
- # ..\..\..\subversion\libsvn_client\ra.c:548: (apr_err=160013)
- # ..\..\..\subversion\libsvn_repos\rev_hunt.c:908: (apr_err=160013)
- # ..\..\..\subversion\libsvn_repos\rev_hunt.c:607: (apr_err=160013)
- # ..\..\..\subversion\libsvn_fs_fs\tree.c:2883: (apr_err=160013)
- # ..\..\..\subversion\libsvn_fs_fs\tree.c:2883: (apr_err=160013)
- # ..\..\..\subversion\libsvn_fs_fs\tree.c:667: (apr_err=160013)
- # svn: File not found: revision 7, path '/A_MOVED'
svntest.actions.run_and_verify_merge(A_MOVED_path, None, None,
sbox.repo_url + '/A_COPY', None,
expected_output,
@@ -19208,8 +19192,8 @@ test_list = [ None,
server_has_mergeinfo),
SkipUnless(new_subtrees_should_not_break_merge,
server_has_mergeinfo),
- XFail(SkipUnless(basic_reintegrate,
- server_has_mergeinfo)),
+ SkipUnless(basic_reintegrate,
+ server_has_mergeinfo),
reintegrate_with_rename,
reintegrate_branch_never_merged_to,
reintegrate_fail_on_modified_wc,