unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Mark Walters <markwalters1009@gmail.com>
To: Jani Nikula <jani@nikula.org>, Tomi Ollila <tomi.ollila@iki.fi>,
	notmuch@notmuchmail.org
Cc: tomi.ollila@iki.fi
Subject: Re: [DRAFT PATCH] notmuch new: do not ignore '.notmuch' in non-toplevel directories
Date: Sat, 01 Mar 2014 09:59:49 +0000	[thread overview]
Message-ID: <87r46mgrxm.fsf@qmul.ac.uk> (raw)
In-Reply-To: <87ios5v59p.fsf@nikula.org>


An alternative would be to ignore any .notmuch path with a xapian
sub-directory. This would mean if a user indexed some subset of their
mail before trying to index the whole thing they wouldn't accidentally
index the old xapian database. 

Alternatively we could just view the above as user error. (If a user
wanted to have an index for a sub-directory they would have to use
excludes to exclude that index from the full-directory index).

Best wishes

Mark

I think the above was suggested by rlb on irc but I don't think it got
any reply. 



On Sun, 23 Feb 2014, Jani Nikula <jani@nikula.org> wrote:
> On Sun, 23 Feb 2014, Tomi Ollila <tomi.ollila@iki.fi> wrote:
>> So that users may have email in subdir/.notmuch directories.
>> ---
>>
>> Compiles, current tests pass. might ignore database_path/.notmuch and
>> might descent into database_path/.../.notmuch :D
>>
>> Tomi
>>
>>
>>  notmuch-new.c | 18 ++++++++++--------
>>  1 file changed, 10 insertions(+), 8 deletions(-)
>>
>> diff --git a/notmuch-new.c b/notmuch-new.c
>> index 8529fdd..b17bd75 100644
>> --- a/notmuch-new.c
>> +++ b/notmuch-new.c
>> @@ -344,7 +344,8 @@ add_file (notmuch_database_t *notmuch, const char *filename,
>>  static notmuch_status_t
>>  add_files (notmuch_database_t *notmuch,
>>  	   const char *path,
>> -	   add_files_state_t *state)
>> +	   add_files_state_t *state,
>> +	   int dirlevel)
>
> I think this is ugly and makes the interface harder to use for indexing
> arbitrary paths.
>
> Instead, I suggest
>
> diff --git a/notmuch-new.c b/notmuch-new.c
> index 8529fdd3eac7..20bc33fca4bd 100644
> --- a/notmuch-new.c
> +++ b/notmuch-new.c
> @@ -469,7 +469,8 @@ add_files (notmuch_database_t *notmuch,
>  	if (strcmp (entry->d_name, ".") == 0 ||
>  	    strcmp (entry->d_name, "..") == 0 ||
>  	    (is_maildir && strcmp (entry->d_name, "tmp") == 0) ||
> -	    strcmp (entry->d_name, ".notmuch") == 0)
> +	    (strcmp (entry->d_name, ".notmuch") == 0 &&
> +	     strcmp (path, notmuch_database_get_path (notmuch)) == 0))
>  	    continue;
>  
>  	next = talloc_asprintf (notmuch, "%s/%s", path, entry->d_name);
>
> And similarly in count_files(), with the root db path passed as first
> argument (as the db is not open yet).
>
>
> BR,
> Jani.
>
>
>
>>  {
>>      DIR *dir = NULL;
>>      struct dirent *entry = NULL;
>> @@ -469,11 +470,11 @@ add_files (notmuch_database_t *notmuch,
>>  	if (strcmp (entry->d_name, ".") == 0 ||
>>  	    strcmp (entry->d_name, "..") == 0 ||
>>  	    (is_maildir && strcmp (entry->d_name, "tmp") == 0) ||
>> -	    strcmp (entry->d_name, ".notmuch") == 0)
>> +	    (dirlevel == 0 && strcmp (entry->d_name, ".notmuch") == 0))
>>  	    continue;
>>  
>>  	next = talloc_asprintf (notmuch, "%s/%s", path, entry->d_name);
>> -	status = add_files (notmuch, next, state);
>> +	status = add_files (notmuch, next, state, dirlevel + 1);
>>  	if (status) {
>>  	    ret = status;
>>  	    goto DONE;
>> @@ -702,7 +703,8 @@ stop_progress_printing_timer (void)
>>   * initialized to zero by the top-level caller before calling
>>   * count_files). */
>>  static void
>> -count_files (const char *path, int *count, add_files_state_t *state)
>> +count_files (const char *path, int *count, add_files_state_t *state,
>> +	     int dirlevel)
>>  {
>>      struct dirent *entry = NULL;
>>      char *next;
>> @@ -725,7 +727,7 @@ count_files (const char *path, int *count, add_files_state_t *state)
>>  	 */
>>  	if (strcmp (entry->d_name, ".") == 0 ||
>>  	    strcmp (entry->d_name, "..") == 0 ||
>> -	    strcmp (entry->d_name, ".notmuch") == 0 ||
>> +	    (dirlevel == 0 && strcmp (entry->d_name, ".notmuch") == 0) ||
>>  	    _entry_in_ignore_list (entry->d_name, state))
>>  	{
>>  	    if (state->debug && _entry_in_ignore_list (entry->d_name, state))
>> @@ -750,7 +752,7 @@ count_files (const char *path, int *count, add_files_state_t *state)
>>  		fflush (stdout);
>>  	    }
>>  	} else if (entry_type == S_IFDIR) {
>> -	    count_files (next, count, state);
>> +	    count_files (next, count, state, dirlevel + 1);
>>  	}
>>  
>>  	free (next);
>> @@ -962,7 +964,7 @@ notmuch_new_command (notmuch_config_t *config, int argc, char *argv[])
>>  	int count;
>>  
>>  	count = 0;
>> -	count_files (db_path, &count, &add_files_state);
>> +	count_files (db_path, &count, &add_files_state, 0);
>>  	if (interrupted)
>>  	    return EXIT_FAILURE;
>>  
>> @@ -1021,7 +1023,7 @@ notmuch_new_command (notmuch_config_t *config, int argc, char *argv[])
>>  	timer_is_active = TRUE;
>>      }
>>  
>> -    ret = add_files (notmuch, db_path, &add_files_state);
>> +    ret = add_files (notmuch, db_path, &add_files_state, 0);
>>      if (ret)
>>  	goto DONE;
>>  
>> -- 
>> 1.8.4.2
>>
>> _______________________________________________
>> notmuch mailing list
>> notmuch@notmuchmail.org
>> http://notmuchmail.org/mailman/listinfo/notmuch
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

  reply	other threads:[~2014-03-01 10:00 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-23  2:16 [BUG] notmuch excludes .notmuch anywhere in the tree Rob Browning
2014-02-23 19:18 ` [DRAFT PATCH] notmuch new: do not ignore '.notmuch' in non-toplevel directories Tomi Ollila
2014-02-23 22:22   ` Jani Nikula
2014-03-01  9:59     ` Mark Walters [this message]
2014-03-01 16:22       ` Rob Browning
2022-01-24 13:39 ` [BUG] notmuch excludes .notmuch anywhere in the tree David Bremner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r46mgrxm.fsf@qmul.ac.uk \
    --to=markwalters1009@gmail.com \
    --cc=jani@nikula.org \
    --cc=notmuch@notmuchmail.org \
    --cc=tomi.ollila@iki.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).