]> git.g-eek.se Git - interimap.git/commitdiff
Note on migrations.
authorGuilhem Moulin <guilhem@fripost.org>
Sun, 20 Jan 2019 19:16:53 +0000 (20:16 +0100)
committerGuilhem Moulin <guilhem@fripost.org>
Sun, 20 Jan 2019 20:59:36 +0000 (21:59 +0100)
README
interimap
interimap.md
pullimap

diff --git a/README b/README
index 70bf1df5cc9d5c905aa911e3e0787828a4db05af..cb34ef19769ce891a1733fddd30e8912d13694a4 100644 (file)
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
 InterIMAP is a fast bidirectional synchronization program for QRESYNC-capable
 IMAP4rev1 servers.  PullIMAP retrieves messages a remote IMAP mailbox and
-deliver them to a SMTP session.  Consult the manuals for more information.
+deliver them to an SMTP session.  Consult the manuals for more information.
 
     https://guilhem.org/man/interimap.1.html
     https://guilhem.org/man/pullimap.1.html
index 41a0cb9249bd5405663371d43c5d1bbfbc26dd1c..0fb6c1ccc4733d3859721ce64d78ea917440243c 100755 (executable)
--- a/interimap
+++ b/interimap
@@ -162,6 +162,10 @@ $DBH->do('PRAGMA foreign_keys = ON');
             # also, lUID  < local.UIDNEXT and rUID < remote.UIDNEXT (except for interrupted syncs)
             # mapping.idx must be found among local.idx (and remote.idx)
         ],
+
+        # We have no version number in the schema, but if we ever need a
+        # migration, we'll add a new table, and assume version 1.0 if
+        # the table is missing.
     );
 
     # Invariants:
index ca83dba69d7ef73f2343af4121d3ffd93f05bb42..1831d39c6ed5d1cc29d00e67398500b64b275930 100644 (file)
@@ -398,7 +398,9 @@ Known bugs and limitations
 
  * Using `interimap` on two identical servers with a non-existent or
    empty *database* will duplicate each message due to the absence of
-   local ↔ remote UID association.
+   local ↔ remote UID association.  Hence one needs to manually empty
+   the mail store on one end when migrating to `interimap` from another
+   synchronisation solution.
 
  * `interimap` is single threaded and doesn't use IMAP command
    pipelining.  Synchronization could be boosted up by sending
index e044df530004b8f5a8404e5d589a6130431e3b15..bd9b1cf63d1af35426d372e606abd9a23748f557 100755 (executable)
--- a/pullimap
+++ b/pullimap
@@ -88,6 +88,11 @@ do {
     fcntl($STATE, F_SETLK, $struct_flock) or die "Can't lock $statefile: $!";
     my $flags = fcntl($STATE, F_GETFD, 0)       or die "fcntl F_GETFD: $!";
     fcntl($STATE, F_SETFD, $flags | FD_CLOEXEC) or die "fcntl F_SETFD: $!";
+
+    # We have no version number in the statefile, but if we ever need a
+    # migration, we'll add a 1-byte header for the version number, and
+    # assume version 1.0 if the size of the file is a multiple of 4
+    # bytes. (We can also use the fact that bytes 5 to 8 are never all 0.)
 };