Index: subversion/svn/merge-cmd.c =================================================================== --- subversion/svn/merge-cmd.c (revision 29288) +++ subversion/svn/merge-cmd.c (working copy) @@ -66,15 +66,17 @@ pool)); } - /* If nothing (ie, "."), a single source, or a source URL plus WC path is - provided, then we don't have two distinct sources. */ + /* If nothing (ie, "."), a single source, a source URL plus WC path, or + WC source and target paths with --reintegrate is provided, then we + don't have two distinct sources. */ if (targets->nelts <= 1) { two_sources_specified = FALSE; } else if (targets->nelts == 2) { - if (svn_path_is_url(sourcepath1) && !svn_path_is_url(sourcepath2)) + if ((svn_path_is_url(sourcepath1) && !svn_path_is_url(sourcepath2)) + || opt_state->reintegrate) two_sources_specified = FALSE; } @@ -149,12 +151,14 @@ /* Catch 'svn merge wc_path1 wc_path2 [target]' without explicit revisions--since it ignores local modifications it may not do what the user expects. Forcing the user to specify a repository - revision should avoid any confusion. */ - if ((first_range_start.kind == svn_opt_revision_unspecified - && ! svn_path_is_url(sourcepath1)) - || - (first_range_end.kind == svn_opt_revision_unspecified - && ! svn_path_is_url(sourcepath2))) + revision should avoid any confusion. The one exception is when + --reintegrate is used, then the source may be a pegged WC path. */ + if (((first_range_start.kind == svn_opt_revision_unspecified + && ! svn_path_is_url(sourcepath1)) + || + (first_range_end.kind == svn_opt_revision_unspecified + && ! svn_path_is_url(sourcepath2))) + && !opt_state->reintegrate) return svn_error_create (SVN_ERR_CLIENT_BAD_REVISION, 0, _("A working copy merge source needs an explicit revision"));