Subject: 26.1: ediff-merge-directories-with-ancestor and subdirectories

From: Ludovic Brenta <[email-masked]>
Date: Tue, 07 Aug 2018 16:08:56 +0100

Hello,

Suppose I have set up four directory trees
(by extracting from a version control system):

your_view/foo/bar/baz.c
other/foo/bar/baz.c
ancestor/foo/bar/baz.c
result/foo/bar/baz.c

Each of the four directories can contain many more
subdirectories and files.

Now I start emacs like so:

emacs --eval '(ediff-merge-directories-with-ancestor "your_view" 
"other" "ancestor" "." "result")'

emacs properly starts an ediff session showing the three directories
and defaulting to saving the merge results in "result" (the value of
the fifth parameter, merge-autostore-dir).  The only
entry in this session is the subdirectory "foo".  Moving to "foo"
and hitting RET results in the prompt:

Save merged files in directory: ~/..../your_view/

Inspecting the file ediff-mult.el I see that the function
ediff-filegroup-action (bound to RET in the ediff session
group panel) obtains the merge-autostore-dir from the
ediff-meta-list of this buffer but fails to pass the
merge-autostore-dir as a parameter to
ediff-directories-internal (called at line 1877).

It would be nice if ediff-filegroup-action would infer the
merge-autostore-dir from that of the parent session and the
name of the subdirectories, i.e. "result/foo/" in this case.

This bug (or misfeature) is also present in 24.5.1.

-- 
Ludovic Brenta.