[notmuch] [PATCH] Handle rename of message file

2009-11-19 Thread Mikhail Gusarov

Twas brillig at 18:06:09 18.11.2009 UTC-08 when keithp at keithp.com did gyre 
and gimble:

 KP> Checking for new files is easy; notmuch already does that, and so
 KP> handling renames doesn't seem all that difficult.

Except rename does not change mtime of file, and so it won't be picked
up by 'notmuch new'.

-- 
  http://fossarchy.blogspot.com/
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: 



[notmuch] [PATCH] Handle rename of message file

2009-11-19 Thread Mikhail Gusarov

Twas brillig at 02:08:15 19.11.2009 UTC+01 when cworth at cworth.org did gyre 
and gimble:

 CW> I believe you said in IRC that this patch is not ready yet.

Yes.

 CW> I'd love to hear more from you on any experiments/ideas you have in
 CW> this area. It would be a really nice feature to have, (particularly
 CW> for people who are experimenting with notmuch while still using
 CW> some other primary email program that keeps fiddling with the
 CW> filenames).

Did not have time to work on it further yet.

The only dumb idea I have in mind is hardlinking all mail to separate
directory in order to make a "pristine copy" which does not change as
time goes. This directory could be cleaned up: if some file has only 1
link, then it was deleted from main mail spool and should be deleted


[notmuch] [PATCH] Handle rename of message file

2009-11-19 Thread Carl Worth
On Wed, 18 Nov 2009 02:51:18 +0600, Mikhail Gusarov  wrote:
> If message file has been renamed, just update filename in the DB.
> 
> Signed-off-by: Mikhail Gusarov 

I believe you said in IRC that this patch is not ready yet.

I'd love to hear more from you on any experiments/ideas you have in this
area. It would be a really nice feature to have, (particularly for
people who are experimenting with notmuch while still using some other
primary email program that keeps fiddling with the filenames).

-Carl


[notmuch] [PATCH] Handle rename of message file

2009-11-18 Thread Keith Packard
On Thu, 19 Nov 2009 08:11:12 +0600, Mikhail Gusarov  wrote:
> 
> Twas brillig at 18:06:09 18.11.2009 UTC-08 when keithp at keithp.com did gyre 
> and gimble:
> 
>  KP> Checking for new files is easy; notmuch already does that, and so
>  KP> handling renames doesn't seem all that difficult.
> 
> Except rename does not change mtime of file, and so it won't be picked
> up by 'notmuch new'.

Yeah, good point -- notmuch new doesn't make sure each file it finds is
already in the database. Again, some kind of inotify-based daemon would
make that efficient, while starting up that daemon could take some time
while the database was searched for new or missing files.

Alternatively, we could record the contents of the directory after
scanning it and then use that to track file changes. It seems like the
current database just doesn't have enough information to make this
tractable.

--
keith.packard at intel.com

-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



[notmuch] [PATCH] Handle rename of message file

2009-11-18 Thread Keith Packard
On Thu, 19 Nov 2009 02:08:15 +0100, Carl Worth  wrote:

> I'd love to hear more from you on any experiments/ideas you have in this
> area. It would be a really nice feature to have, (particularly for
> people who are experimenting with notmuch while still using some other
> primary email program that keeps fiddling with the filenames).

Checking for new files is easy; notmuch already does that, and so
handling renames doesn't seem all that difficult. The hard part to me is
detecting deleted messages; about the only thing I can imagine being at
all efficient is to use inotify in a daemon. Starting that daemon up
would entail scanning the database for all messages in a particular
directory and then looking for those files to see if they were still
around. Ick.

--
keith.packard at intel.com




-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



[notmuch] [PATCH] Handle rename of message file

2009-11-18 Thread Mikhail Gusarov
If message file has been renamed, just update filename in the DB.

Signed-off-by: Mikhail Gusarov 
---
 lib/database.cc |   21 -
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/lib/database.cc b/lib/database.cc
index 3c8d626..c4eb8b6 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -925,20 +925,23 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
if (private_status == NOTMUCH_PRIVATE_STATUS_NO_DOCUMENT_FOUND) {
_notmuch_message_set_filename (message, filename);
_notmuch_message_add_term (message, "type", "mail");
+
+   ret = _notmuch_database_link_message (notmuch, message, 
message_file);
+   if (ret)
+   goto DONE;
+
+   date = notmuch_message_file_get_header (message_file, "date");
+   _notmuch_message_set_date (message, date);
+
+   _notmuch_message_index_file (message, filename);
+   } else if (strcmp(notmuch_message_get_filename(message), filename)) {
+   /* Message file has been moved/renamed */
+   _notmuch_message_set_filename (message, filename);
} else {
ret = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID;
goto DONE;
}

-   ret = _notmuch_database_link_message (notmuch, message, message_file);
-   if (ret)
-   goto DONE;
-
-   date = notmuch_message_file_get_header (message_file, "date");
-   _notmuch_message_set_date (message, date);
-
-   _notmuch_message_index_file (message, filename);
-
_notmuch_message_sync (message);
 } catch (const Xapian::Error ) {
fprintf (stderr, "A Xapian exception occurred: %s.\n",
-- 
1.6.3.3