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);