mirror of
https://git.notmuchmail.org/git/notmuch
synced 2025-03-14 03:25:15 +01:00
notmuch-new: backup tags before database upgrade
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.
This commit is contained in:
parent
4c62d9366a
commit
a7eaa4d84a
2 changed files with 31 additions and 2 deletions
|
@ -989,8 +989,35 @@ notmuch_new_command (notmuch_config_t *config, int argc, char *argv[])
|
|||
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 ("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,
|
||||
|
|
|
@ -26,9 +26,11 @@ output=$(notmuch search path:foo)
|
|||
test_expect_equal "$output" ""
|
||||
|
||||
test_begin_subtest "database upgrade from format version 1"
|
||||
output=$(notmuch new)
|
||||
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.
|
||||
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."
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue