export: write a message once, in every folder it was in
A source that files one message in several folders -- IMAP and Maildir copies, Gmail labels -- leaves one archive row per folder, all pointing at the same blob. Export imported each row on its own, so the message arrived on the target once per folder. Worse, an interrupted export matched the rest by Message-ID alone on the next run and skipped them, so their folders were never added. Export now folds rows with the same blob into one email, with the union of their folders and keywords. On a match it adds, with one batched Email/set, any migrated folder the target copy is missing; folders that exist only on the target are left alone. Matching is still by Message-ID (or the fallback digest), with size deciding between several messages that share one, so two different messages are never folded onto one target email. The archive is unchanged: the fold happens at export, so imports, resumes and deletions work exactly as before.
This commit is contained in:
@@ -196,6 +196,12 @@ By default it only adds and updates -- items that match are updated, the
|
||||
rest are created, and anything already on the target that the archive does
|
||||
not cover is left alone.
|
||||
|
||||
Email is matched by Message-ID, or without one by sender, subject, date and
|
||||
recipients; where several messages share one, size decides. A message the
|
||||
source kept in several folders -- IMAP and Maildir copies, Gmail labels -- is
|
||||
written once, in all of them, and a later run adds any folder it is still
|
||||
missing on the target.
|
||||
|
||||
`--prune` also deletes what is on the target and not in the archive. It asks
|
||||
first; `--yes` answers for it, for scripts. Export speaks JMAP only.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user