* [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
@ 2010-03-19 15:36 Michael Stapelberg
2010-03-19 19:17 ` Mark Alexander
2010-03-22 11:30 ` Michael Stapelberg
0 siblings, 2 replies; 18+ messages in thread
From: Michael Stapelberg @ 2010-03-19 15:36 UTC (permalink / raw)
To: sup-devel
[-- Attachment #1: Type: text/plain, Size: 477 bytes --]
Hi,
the attached patch uses nanosecond resolution to generate the unique id for
each message of a maildir. This is necessary because I have about 2000 messages
which have the same mtime and size. I am not sure on how to properly check for
ruby 1.9 and do the right thing. Also, the user probably needs to run sup-sync
after this change. Maybe it should be implemented as a config option and be
enabled by default on new configs by sup-config? Thoughts?
Best regards,
Michael
[-- Attachment #2: 0002-Use-nanosecond-resolution-of-mtime-for-generating-th.patch --]
[-- Type: application/octet-stream, Size: 893 bytes --]
From b4bb69eeff2dc21902db9579c8ddd0f32f73047e Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <michael@stapelberg.de>
Date: Fri, 19 Mar 2010 16:32:02 +0100
Subject: [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
This requires ruby 1.9 (nanosecond resolution is not available in 1.8)
---
lib/sup/maildir.rb | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb
index 89a947f..d0c3800 100644
--- a/lib/sup/maildir.rb
+++ b/lib/sup/maildir.rb
@@ -196,7 +196,7 @@ private
#makes a noticeable difference on nfs.
stat = File.stat(fn)
# use 7 digits for the size. why 7? seems nice.
- sprintf("%d%07d", stat.mtime, stat.size % 10000000).to_i
+ sprintf("%d%d%07d", stat.mtime, stat.mtime.tv_nsec, stat.size % 10000000).to_i
end
def new_maildir_basefn
--
1.6.5
[-- Attachment #3: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 15:36 [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message Michael Stapelberg
@ 2010-03-19 19:17 ` Mark Alexander
2010-03-19 19:27 ` Michael Stapelberg
2010-03-19 19:34 ` Eric Sherman
2010-03-22 11:30 ` Michael Stapelberg
1 sibling, 2 replies; 18+ messages in thread
From: Mark Alexander @ 2010-03-19 19:17 UTC (permalink / raw)
To: Michael Stapelberg; +Cc: sup-devel
Excerpts from Michael Stapelberg's message of Fri Mar 19 11:36:37 -0400 2010:
> the attached patch uses nanosecond resolution to generate the unique id for
> each message of a maildir. This is necessary because I have about 2000 messages
> which have the same mtime and size.
This a great idea, but if I understand correctly, it requires a file
system that supports nanosecond resolution on timestamps, like ext4.
Those of us on ext3 are out of luck, apparently:
https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Inode-related_features
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:17 ` Mark Alexander
@ 2010-03-19 19:27 ` Michael Stapelberg
2010-03-19 19:35 ` Ben Walton
2010-03-19 19:34 ` Eric Sherman
1 sibling, 1 reply; 18+ messages in thread
From: Michael Stapelberg @ 2010-03-19 19:27 UTC (permalink / raw)
To: Mark Alexander; +Cc: sup-devel
Hi Mark,
Excerpts from Mark Alexander's message of 2010-03-19 20:17:01 +0100:
> This a great idea, but if I understand correctly, it requires a file
> system that supports nanosecond resolution on timestamps, like ext4.
> Those of us on ext3 are out of luck, apparently:
> https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Inode-related_features
Looks like you are right. The change won’t break on ext3, though, the
nanoseconds will just be zero. Time to upgrade to ext4, I’d say ;-).
Best regards,
Michael
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:27 ` Michael Stapelberg
@ 2010-03-19 19:35 ` Ben Walton
2010-03-19 19:47 ` Michael Stapelberg
0 siblings, 1 reply; 18+ messages in thread
From: Ben Walton @ 2010-03-19 19:35 UTC (permalink / raw)
To: sup-devel
Excerpts from Michael Stapelberg's message of Fri Mar 19 15:27:36 -0400 2010:
Hi Michael,
> Looks like you are right. The change won’t break on ext3, though, the
> nanoseconds will just be zero. Time to upgrade to ext4, I’d say ;-).
I like the idea here, but requiring ruby 1.9 _and_ a filesystem
upgrade for a _mail client_ is a bit of a stretch, don't you think?
Isn't there a more portable solution?
Thanks
-Ben
--
Ben Walton
Systems Programmer - CHASS
University of Toronto
C:416.407.5610 | W:416.978.4302
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:35 ` Ben Walton
@ 2010-03-19 19:47 ` Michael Stapelberg
2010-03-19 20:05 ` Ben Walton
2010-03-19 20:35 ` Mark Alexander
0 siblings, 2 replies; 18+ messages in thread
From: Michael Stapelberg @ 2010-03-19 19:47 UTC (permalink / raw)
To: sup-devel
Hi Ben,
Excerpts from Ben Walton's message of 2010-03-19 20:35:31 +0100:
> I like the idea here, but requiring ruby 1.9 _and_ a filesystem
> upgrade for a _mail client_ is a bit of a stretch, don't you think?
> Isn't there a more portable solution?
There is: Rich mentioned that proper move/delete handling for maildirs also
solves the problem. However that doesn’t seem to be planned for the very near
future, so I posted my patch which fixes the problem right now (given that
you use ruby 1.9 and a decent filesystem).
Best regards,
Michael
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:47 ` Michael Stapelberg
@ 2010-03-19 20:05 ` Ben Walton
2010-03-19 21:02 ` Rich Lane
2010-03-19 20:35 ` Mark Alexander
1 sibling, 1 reply; 18+ messages in thread
From: Ben Walton @ 2010-03-19 20:05 UTC (permalink / raw)
To: sup-devel
Excerpts from Michael Stapelberg's message of Fri Mar 19 15:47:53 -0400 2010:
> There is: Rich mentioned that proper move/delete handling for
> maildirs also solves the problem. However that doesn’t seem to be
> planned for the very near future, so I posted my patch which fixes
> the problem right now (given that you use ruby 1.9 and a decent
> filesystem).
Ok. I'd rather work with you towards implementing this handling than
force an upgrade on myself that would be both ruby and filesystem
(incl servers and nfs).
Thanks
-Ben
--
Ben Walton
Systems Programmer - CHASS
University of Toronto
C:416.407.5610 | W:416.978.4302
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 20:05 ` Ben Walton
@ 2010-03-19 21:02 ` Rich Lane
0 siblings, 0 replies; 18+ messages in thread
From: Rich Lane @ 2010-03-19 21:02 UTC (permalink / raw)
To: Ben Walton; +Cc: sup-devel
Excerpts from Ben Walton's message of 2010-03-19 16:05:06 -0400:
> Excerpts from Michael Stapelberg's message of Fri Mar 19 15:47:53 -0400 2010:
>
> > There is: Rich mentioned that proper move/delete handling for
> > maildirs also solves the problem. However that doesn’t seem to be
> > planned for the very near future, so I posted my patch which fixes
> > the problem right now (given that you use ruby 1.9 and a decent
> > filesystem).
>
> Ok. I'd rather work with you towards implementing this handling than
> force an upgrade on myself that would be both ruby and filesystem
> (incl servers and nfs).
I'd also much rather see proper maildir handling. My objections to the
current patch are Ruby 1.8 compatibility - not just the missing method,
but that you'd need to reindex whenever switching between Ruby 1.8 and
1.9.
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:47 ` Michael Stapelberg
2010-03-19 20:05 ` Ben Walton
@ 2010-03-19 20:35 ` Mark Alexander
2010-03-19 21:17 ` Rich Lane
1 sibling, 1 reply; 18+ messages in thread
From: Mark Alexander @ 2010-03-19 20:35 UTC (permalink / raw)
To: Michael Stapelberg; +Cc: sup-devel
Excerpts from Michael Stapelberg's message of Fri Mar 19 15:47:53 -0400 2010:
> Excerpts from Ben Walton's message of 2010-03-19 20:35:31 +0100:
> > Isn't there a more portable solution?
> There is: Rich mentioned that proper move/delete handling for maildirs also
> solves the problem.
I must have missed that message. What is the proposed solution?
How does it solve the problem of out-of-order maildir IDs?
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 20:35 ` Mark Alexander
@ 2010-03-19 21:17 ` Rich Lane
0 siblings, 0 replies; 18+ messages in thread
From: Rich Lane @ 2010-03-19 21:17 UTC (permalink / raw)
To: Mark Alexander; +Cc: sup-devel
Excerpts from Mark Alexander's message of 2010-03-19 16:35:38 -0400:
> Excerpts from Michael Stapelberg's message of Fri Mar 19 15:47:53 -0400 2010:
> > Excerpts from Ben Walton's message of 2010-03-19 20:35:31 +0100:
> > > Isn't there a more portable solution?
> > There is: Rich mentioned that proper move/delete handling for maildirs also
> > solves the problem.
>
> I must have missed that message. What is the proposed solution?
> How does it solve the problem of out-of-order maildir IDs?
Notmuch implements this correctly. They essentially keep a sorted list
of mail filenames in the index and then iterate over that and the sorted
list of the filenames that are currently in the maildir to detect
inserts, deletes, and renames.
I just rebased and pushed a multiple-locations branch I've had sitting
around to mainline. It's probably buggy. It's been a while since I
thought about this problem, but I think keeping track of multiple
locations (source/source info) for a single message (identified by
message-id) should make the maildir logic simpler.
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:17 ` Mark Alexander
2010-03-19 19:27 ` Michael Stapelberg
@ 2010-03-19 19:34 ` Eric Sherman
2010-03-19 19:46 ` Michael Stapelberg
1 sibling, 1 reply; 18+ messages in thread
From: Eric Sherman @ 2010-03-19 19:34 UTC (permalink / raw)
To: Mark Alexander; +Cc: sup-devel
Excerpts from Mark Alexander's message of Fri Mar 19 15:17:01 -0400 2010:
> Excerpts from Michael Stapelberg's message of Fri Mar 19 11:36:37 -0400 2010:
> > the attached patch uses nanosecond resolution to generate the unique id for
> > each message of a maildir. This is necessary because I have about 2000 messages
> > which have the same mtime and size.
>
> This a great idea, but if I understand correctly, it requires a file
> system that supports nanosecond resolution on timestamps, like ext4.
> Those of us on ext3 are out of luck, apparently:
>
> https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Inode-related_features
Would inserting an SHA1 into the id solve these problems, or does it just
introduce more problems?
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:34 ` Eric Sherman
@ 2010-03-19 19:46 ` Michael Stapelberg
2010-03-19 20:40 ` Eric Sherman
0 siblings, 1 reply; 18+ messages in thread
From: Michael Stapelberg @ 2010-03-19 19:46 UTC (permalink / raw)
To: Eric Sherman; +Cc: sup-devel
Hi Eric,
Excerpts from Eric Sherman's message of 2010-03-19 20:34:32 +0100:
> Would inserting an SHA1 into the id solve these problems, or does it just
> introduce more problems?
The latter. The ID needs to be linear, not only unique.
Best regards,
Michael
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 19:46 ` Michael Stapelberg
@ 2010-03-19 20:40 ` Eric Sherman
2010-03-19 21:04 ` Mark Alexander
0 siblings, 1 reply; 18+ messages in thread
From: Eric Sherman @ 2010-03-19 20:40 UTC (permalink / raw)
To: Michael Stapelberg; +Cc: sup-devel
Excerpts from Michael Stapelberg's message of Fri Mar 19 15:46:29 -0400 2010:
> Excerpts from Eric Sherman's message of 2010-03-19 20:34:32 +0100:
> > Would inserting an SHA1 into the id solve these problems, or does it just
> > introduce more problems?
> The latter. The ID needs to be linear, not only unique.
Oh I see.
Is it fair to say that if a set of messages are can only be disambiguated
by adding nanosecond precision to their timestamps, the ordering across
such a set may as well be arbitrary?
In looking at make_id, it seems like we should be able to simply append
more numeric noise at the end of the id. The file size is already appended
to the mtime, potentially making the ordering arbitrary for equivalent
mtimes.
Would appending x-digits of numeric noise, probably derived from SHA1, be
suitable?
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 20:40 ` Eric Sherman
@ 2010-03-19 21:04 ` Mark Alexander
2010-03-20 2:23 ` Mark Alexander
0 siblings, 1 reply; 18+ messages in thread
From: Mark Alexander @ 2010-03-19 21:04 UTC (permalink / raw)
To: Eric Sherman; +Cc: sup-devel
Excerpts from Eric Sherman's message of Fri Mar 19 16:40:46 -0400 2010:
> Would appending x-digits of numeric noise, probably derived from SHA1, be
> suitable?
I was thinking the same thing. For performance, perhaps only the SHA1
of the file name, not the file contents, would be adequate.
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 21:04 ` Mark Alexander
@ 2010-03-20 2:23 ` Mark Alexander
0 siblings, 0 replies; 18+ messages in thread
From: Mark Alexander @ 2010-03-20 2:23 UTC (permalink / raw)
To: Mark Alexander; +Cc: sup-devel
Excerpts from Mark Alexander's message of Fri Mar 19 17:04:11 -0400 2010:
> Excerpts from Eric Sherman's message of Fri Mar 19 16:40:46 -0400 2010:
> > Would appending x-digits of numeric noise, probably derived from SHA1, be
> > suitable?
>
> I was thinking the same thing. For performance, perhaps only the SHA1
> of the file name, not the file contents, would be adequate.
Never mind. This won't work because it violates the requirement
that IDs must always increase.
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-19 15:36 [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message Michael Stapelberg
2010-03-19 19:17 ` Mark Alexander
@ 2010-03-22 11:30 ` Michael Stapelberg
2010-03-22 16:25 ` Ben Walton
2010-03-22 17:00 ` Rich Lane
1 sibling, 2 replies; 18+ messages in thread
From: Michael Stapelberg @ 2010-03-22 11:30 UTC (permalink / raw)
To: sup-devel
[-- Attachment #1: Type: text/plain, Size: 190 bytes --]
Hi,
attached to this mail you can find an updated version of the patch. It now
uses a fixed length in sprintf for the nanoseconds so that the IDs will be
increasing.
Best regards,
Michael
[-- Attachment #2: 0002-Use-nanosecond-resolution-of-mtime-for-generating-th.patch --]
[-- Type: application/octet-stream, Size: 895 bytes --]
From b4bb69eeff2dc21902db9579c8ddd0f32f73047e Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <michael@stapelberg.de>
Date: Fri, 19 Mar 2010 16:32:02 +0100
Subject: [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
This requires ruby 1.9 (nanosecond resolution is not available in 1.8)
---
lib/sup/maildir.rb | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/sup/maildir.rb b/lib/sup/maildir.rb
index 89a947f..d0c3800 100644
--- a/lib/sup/maildir.rb
+++ b/lib/sup/maildir.rb
@@ -196,7 +196,7 @@ private
#makes a noticeable difference on nfs.
stat = File.stat(fn)
# use 7 digits for the size. why 7? seems nice.
- sprintf("%d%07d", stat.mtime, stat.size % 10000000).to_i
+ sprintf("%d%09d%07d", stat.mtime, stat.mtime.tv_nsec, stat.size % 10000000).to_i
end
def new_maildir_basefn
--
1.6.5
[-- Attachment #3: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-22 11:30 ` Michael Stapelberg
@ 2010-03-22 16:25 ` Ben Walton
2010-03-25 6:25 ` Tero Tilus
2010-03-22 17:00 ` Rich Lane
1 sibling, 1 reply; 18+ messages in thread
From: Ben Walton @ 2010-03-22 16:25 UTC (permalink / raw)
To: sup-devel
Excerpts from Michael Stapelberg's message of Mon Mar 22 07:30:15 -0400 2010:
> attached to this mail you can find an updated version of the
> patch. It now uses a fixed length in sprintf for the nanoseconds so
> that the IDs will be increasing.
So we're still needing ruby 1.9 and ext4 then? That's a deal breaker
for me. 1.9 I can live with, but there is no way my environment will
be using ext4 any time soon.
Thanks
-Ben
--
Ben Walton
Systems Programmer - CHASS
University of Toronto
C:416.407.5610 | W:416.978.4302
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message
2010-03-22 11:30 ` Michael Stapelberg
2010-03-22 16:25 ` Ben Walton
@ 2010-03-22 17:00 ` Rich Lane
1 sibling, 0 replies; 18+ messages in thread
From: Rich Lane @ 2010-03-22 17:00 UTC (permalink / raw)
To: Michael Stapelberg; +Cc: sup-devel
Excerpts from Michael Stapelberg's message of 2010-03-22 07:30:15 -0400:
> attached to this mail you can find an updated version of the patch. It now
> uses a fixed length in sprintf for the nanoseconds so that the IDs will be
> increasing.
If you add a config option (defaulting to false) I'll accept the patch.
I'm going to restart looking at implementing proper maildir support.
IIRC the tough part is making it fit within sup's existing source
interfaces. Part of my reason for nuking IMAP/mbox+ssh sources was to
make changes to the source API easier, so hopefully this will be more
tractable now.
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2010-03-25 6:43 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-03-19 15:36 [sup-devel] [PATCH 2/2] Use nanosecond resolution of mtime for generating the unique id for each message Michael Stapelberg
2010-03-19 19:17 ` Mark Alexander
2010-03-19 19:27 ` Michael Stapelberg
2010-03-19 19:35 ` Ben Walton
2010-03-19 19:47 ` Michael Stapelberg
2010-03-19 20:05 ` Ben Walton
2010-03-19 21:02 ` Rich Lane
2010-03-19 20:35 ` Mark Alexander
2010-03-19 21:17 ` Rich Lane
2010-03-19 19:34 ` Eric Sherman
2010-03-19 19:46 ` Michael Stapelberg
2010-03-19 20:40 ` Eric Sherman
2010-03-19 21:04 ` Mark Alexander
2010-03-20 2:23 ` Mark Alexander
2010-03-22 11:30 ` Michael Stapelberg
2010-03-22 16:25 ` Ben Walton
2010-03-25 6:25 ` Tero Tilus
2010-03-22 17:00 ` Rich Lane
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox