On Sat, Sep 10, 2011 at 12:40:11AM +0200, Stefan Sperling wrote:
> It would help if you could present examples where elision does not
> work for you, so we can fix 'svn merge'.
The following quote from
https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_client/mergeinfo.h
provides some background on how elision is supposed to work.
/* Elide any svn:mergeinfo set on TARGET_WCPATH to its nearest working
copy (or possibly repository) ancestor with equivalent mergeinfo.
If WC_ELISION_LIMIT_PATH is NULL check up to the root of the
working copy or the nearest switched parent for an elision
destination, if none is found check the repository, otherwise check
as far as WC_ELISION_LIMIT_PATH within the working copy.
TARGET_WCPATH and WC_ELISION_LIMIT_PATH, if it exists, must both be
absolute or relative to the working directory.
Elision occurs if:
A) TARGET_WCPATH has empty mergeinfo and no parent path with
explicit mergeinfo can be found in either the WC or the
repository (WC_ELISION_LIMIT_PATH must be NULL for this to
occur).
B) TARGET_WCPATH has empty mergeinfo and its nearest parent also
has empty mergeinfo.
C) TARGET_WCPATH has the same mergeinfo as its nearest parent
when that parent's mergeinfo is adjusted for the path
difference between the two, e.g.:
TARGET_WCPATH = A_COPY/D/H
TARGET_WCPATH's mergeinfo = '/A/D/H:3'
TARGET_WCPATH nearest parent = A_COPY
Parent's mergeinfo = '/A:3'
Path differece = 'D/H'
Parent's adjusted mergeinfo = '/A/D/H:3'
If Elision occurs remove the svn:mergeinfo property from
TARGET_WCPATH. */
svn_error_t *
svn_client__elide_mergeinfo(const char *target_wcpath,
const char *wc_elision_limit_path,
svn_client_ctx_t *ctx,
apr_pool_t *pool);
Received on 2011-09-10 00:47:22 CEST