The documentation says:
mode
This setting defines how the paste actions behave when applied to an image that already has a history stack. In simple terms the “overwrite” mode deletes the previous history stack before pasting, whereas “append” concatenates the two history stacks together.A copied history stack can have multiple entries of the same module (with the same name or different names) and pasting behaves differently for these entries in append and overwrite modes.
In append mode, […]
In overwrite mode the behavior is the same except that the history of the destination image is deleted before the paste operation commences. The “copy all”/“paste all” actions in this mode will precisely duplicate the copied history stack to the destination images (including any duplicate occurrences).
Note: If you use the “copy” button (copy all safe modules) followed by the “paste” button (paste all copied modules), the paste will always be done in overwrite mode, regardless of the setting of this parameter. Similarly when performing the same operation using keyboard shortcuts.
(darktable user manual - history stack)
However, this does not seem to be the case. I wonder if this is a problem in the documentation, or a problem in the implementation.
Here is how the top of the history stack of the target image looks:
And here is the history stack of the source image:
According to the text (see the parts in italics), if I do a Ctrl + C on the source image, followed by Ctrl + V on the target image:
- the paste will always be done in overwrite mode
- In overwrite mode […] the history of the destination image is deleted before the paste operation commences.
However, after copy + paste, the target image’s stack looks like this:
Entry #51 contrast equalizer was preserved, and everything below it. On top, I got:
- highlight reconstruction
- hot pixels
- demosaic
- denoise (profiled)
- exposure
- input color profile
- color calibration
- color balance rgb
- sigmoid (inactive)
- filmic rgb
- local contrast.
If I repeat this with the mode explicitly set to overwrite, the target image ends up with a stack of 20 entries (the missing item is lens correction).
Should I raise an issue against the code base, the documentation, or my own understanding?
I think the ‘copy all’ action means using ‘copy’, and ‘paste all’ means ‘selective paste’ + selecting all items (see the description at the end of the copy operation: You can override all of these exclusions by using “selective paste…” and choosing which modules to paste to the target image(s)).