# # # patch "cmd_netsync.cc" # from [ab84b4cab47a76bb3002346639d93ae24ffda9ae] # to [b2310052f3ac42614687aaf063fd4a0cd9ac27cc] # # patch "cmd_ws_commit.cc" # from [252e8694f2e1e38a9ca223792d36f2757ca1d2c6] # to [c214ae2cccc2608430c2983b58ed82978cf1fc76] # # patch "database.cc" # from [d061178f713d11eaeb8258766a0652829ab56f6a] # to [17a4e7f5bce4cbe492b4e9e2bf5533f589e1fcc2] # # patch "database.hh" # from [c60049b83091daa228f0f05487bb5d09218c14e3] # to [4c795ebc65f3461b2efa6096a49a2e5711a5707f] # ============================================================ --- cmd_netsync.cc ab84b4cab47a76bb3002346639d93ae24ffda9ae +++ cmd_netsync.cc b2310052f3ac42614687aaf063fd4a0cd9ac27cc @@ -708,13 +708,13 @@ CMD(clone, "clone", "", CMD_REF(network) // db URIs will work system_path start_dir(get_current_working_dir(), origin::system); + database_path_helper helper(app.lua); + helper.maybe_set_default_alias(app.opts); + database db(app); db.create_if_not_exists(); db.ensure_open(); - // FIXME: newly created databases are not saved to _MTN/options since - // we're not updating app.opts yet - // this is actually stupid, but app.opts.branch must be set here // otherwise it will not be written into _MTN/options, in case // a revision is chosen which has multiple branch certs ============================================================ --- cmd_ws_commit.cc 252e8694f2e1e38a9ca223792d36f2757ca1d2c6 +++ cmd_ws_commit.cc c214ae2cccc2608430c2983b58ed82978cf1fc76 @@ -1705,13 +1705,13 @@ CMD_NO_WORKSPACE(setup, "setup", "", CMD directory_exists(workspace_dir) ? _MTN_dir : workspace_dir ); + database_path_helper helper(app.lua); + helper.maybe_set_default_alias(app.opts); + database db(app); db.create_if_not_exists(); db.ensure_open(); - // FIXME: newly created databases are not saved to _MTN/options since - // we're not updating app.opts yet - workspace::create_workspace(app.opts, app.lua, workspace_dir); workspace work(app); ============================================================ --- database.cc d061178f713d11eaeb8258766a0652829ab56f6a +++ database.cc 17a4e7f5bce4cbe492b4e9e2bf5533f589e1fcc2 @@ -557,15 +557,9 @@ database::create_if_not_exists() void database::create_if_not_exists() { - if (!opts.dbname_given) + imp->check_filename(); + if (!file_exists(imp->filename)) { - database_path_helper helper(lua); - helper.get_default_database_path(imp->filename); - imp->type = managed_db; - } - - if (get_path_status(imp->filename) == path::nonexistent) - { P(F("initializing new database '%s'") % imp->filename); initialize(); } @@ -4779,20 +4773,22 @@ void } void -database_path_helper::get_default_database_path(system_path & path) +database_path_helper::maybe_set_default_alias(options & opts) { - vector default_paths; - E(lua.hook_get_default_database_locations(default_paths) || default_paths.size() == 0, - origin::user, F("could not query default database locations")); + if (opts.dbname_given && ( + !opts.dbname.as_internal().empty() || + !opts.dbname_alias.empty())) + { + return; + } string alias; E(lua.hook_get_default_database_alias(alias) || alias.empty(), origin::user, F("could not query default database alias")); - path_component basename; - validate_and_clean_alias(alias, basename); - - path = (*default_paths.begin()) / basename; + opts.dbname_given = true; + opts.dbname_alias = alias; + opts.dbname_type = managed_db; } void ============================================================ --- database.hh c60049b83091daa228f0f05487bb5d09218c14e3 +++ database.hh 4c795ebc65f3461b2efa6096a49a2e5711a5707f @@ -589,7 +589,7 @@ public: void get_database_path(options const & opts, system_path & path); - void get_default_database_path(system_path & path); + void maybe_set_default_alias(options & opts); private: void validate_and_clean_alias(std::string const & alias, path_component & pc);