All we do here is calculate the backup filename, and call the existing
dump routine.
Also take the opportunity to add a message about being safe to
interrupt.
return EXIT_FAILURE;
if (notmuch_database_needs_upgrade (notmuch)) {
return EXIT_FAILURE;
if (notmuch_database_needs_upgrade (notmuch)) {
- if (add_files_state.verbosity >= VERBOSITY_NORMAL)
+ time_t now = time (NULL);
+ struct tm *gm_time = gmtime (&now);
+
+ /* since dump files are written atomically, the amount of
+ * harm from overwriting one within a second seems
+ * relatively small. */
+
+ const char *backup_name =
+ talloc_asprintf (notmuch, "%s/dump-%04d%02d%02dT%02d%02d%02d.gz",
+ dot_notmuch_path,
+ gm_time->tm_year + 1900,
+ gm_time->tm_mon + 1,
+ gm_time->tm_mday,
+ gm_time->tm_hour,
+ gm_time->tm_min,
+ gm_time->tm_sec);
+
+ if (add_files_state.verbosity >= VERBOSITY_NORMAL) {
printf ("Welcome to a new version of notmuch! Your database will now be upgraded.\n");
printf ("Welcome to a new version of notmuch! Your database will now be upgraded.\n");
+ printf ("This process is safe to interrupt.\n");
+ printf ("Backing up tags to %s...\n", backup_name);
+ }
+
+ if (notmuch_database_dump (notmuch, backup_name, "",
+ DUMP_FORMAT_BATCH_TAG, TRUE)) {
+ fprintf (stderr, "Backup failed. Aborting upgrade.");
+ return EXIT_FAILURE;
+ }
+
gettimeofday (&add_files_state.tv_start, NULL);
notmuch_database_upgrade (notmuch,
add_files_state.verbosity >= VERBOSITY_NORMAL ? upgrade_print_progress : NULL,
gettimeofday (&add_files_state.tv_start, NULL);
notmuch_database_upgrade (notmuch,
add_files_state.verbosity >= VERBOSITY_NORMAL ? upgrade_print_progress : NULL,
test_expect_equal "$output" ""
test_begin_subtest "database upgrade from format version 1"
test_expect_equal "$output" ""
test_begin_subtest "database upgrade from format version 1"
+output=$(notmuch new | sed -e 's/^Backing up tags to .*$/Backing up tags to FILENAME/')
test_expect_equal "$output" "\
Welcome to a new version of notmuch! Your database will now be upgraded.
test_expect_equal "$output" "\
Welcome to a new version of notmuch! Your database will now be upgraded.
+This process is safe to interrupt.
+Backing up tags to FILENAME
Your notmuch database has now been upgraded to database format version 2.
No new mail."
Your notmuch database has now been upgraded to database format version 2.
No new mail."