On Sun, Apr 19, 2015 at 12:24 PM, Oswald Buddenhagen
<oswald.buddenha...@gmx.de> wrote:
> the next question is whether anyone uses the Flatten option with
> anything but the dot as separator? i suspect no, so i'd take away that
> configurability.

Sorry for the late reply.  Yes, I do use `Flatten` with `#` as the
separator instead of `.`.  (In fact before there was this option I had
applied a patch to allow hierarchical IMAP folders and flatten them
with such a pattern.)


> Verbatim - verbatim folder names: top/sub/subsub
> Legacy - subfolder names are prefixed with dots: top/.sub/.subsub
>         (default for backwards compatibility reasons)
> Maildir++ - subfolder names are joined with dots and the
>         result is prefixed with another dot: top/.sub.subsub
>         (this is what the Legacy format should have been to start with)
> Flatten - folder names are joined with dots: top.sub.subsub


A minor comment: except `Flatten`, all the others seem to introduce
some naming ambiguity, because a maildir already has `cur`, `new` and
`tmp` folders, plus a few other `.*` files used by `mbsync` and
perhaps other external tools.  Therefore adding new `.*` folders for
the IMAP sub-folders would introduce some naming ambiguity especially
when one uses other tools that create `.*` folders or files.  (That is
why I use `Flatten` option.)

For example I have `.md5` folders, with timestamped `md5sum` outputs,
under each maildir to checksum my email files, and I use Git in the
"top" directory to snapshot everything.


If I would to implement it from scratch, and having hierarchical
maildirs would be the requirement, I would go with the following
rules:

* given a target folder for `mbsync` to store emails into, all its
children must obey the following rules;

* all names starting with `_` are reserved to `mbsync`;
* all names starting with `.` are ignored by `mbsync`, and any tool
(including `mbsync`) is free to create files or folders starting with
`.`;

* all other children must folders and have names starting with either
a letter, a number, or a set of limited special characters like `[`
and a few others;  these folders must obey the same rules as the
target folder;  (i.e. apply rules recursively, thus yielding a
hierarchical structure;)

* a special folder named `_maildir` is to be used as a maildir to
store the emails for the current folder;  (i.e. it contains only
`cur`, `new`, and `tmp`;)
* inside the `_maildir` folder all files or folders starting with `.`
are ignored by `mbsync`;


Based on your example such a hierarchy would look like:
* top
  * _maildir
    * cur, new, tmp
    * .something
  * sub
    * _maildir
      * cur
    * .something
    * subsub
      * _maildir
        * new
      * .something


Thus with such a structure all ambiguity is gone, and finding, for
example, all email files is as simple as:

  find /target/ \
      -type f \
      \( -path '*/_maildir/cur/*' -o -path '*/_maildir/new/*' \) \
      -not -path '*/.*/*' \
      -print


> objections? better ideas?

Please allow `Flatten` to specify the separator.

Thanks,
Ciprian.

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to