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

Reply via email to