# # # patch "cmd_merging.cc" # from [c00d7dd2a1dd4dda7da812ae6216b6ee391238b9] # to [b9e3e1579bd3e0ea69695b33b40f3244a18739fa] # # patch "netsync.cc" # from [a0f07bb45dd6a8a123925708da0bd97df023a597] # to [7f523fa35df92eb2ae1f04bc790731d8609b97f1] # ============================================================ --- cmd_merging.cc c00d7dd2a1dd4dda7da812ae6216b6ee391238b9 +++ cmd_merging.cc b9e3e1579bd3e0ea69695b33b40f3244a18739fa @@ -153,7 +153,7 @@ CMD(update, "update", "", CMD_REF(worksp database db(app); workspace work(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); // Figure out where we are parent_map parents; @@ -175,7 +175,7 @@ CMD(update, "update", "", CMD_REF(worksp { P(F("updating along branch '%s'") % app.opts.branchname); set candidates; - pick_update_candidates(app.lua, project, candidates, old_rid, + pick_update_candidates(app.lua, projects, candidates, old_rid, app.opts.branchname, app.opts.ignore_suspend_certs); N(!candidates.empty(), @@ -189,7 +189,7 @@ CMD(update, "update", "", CMD_REF(worksp for (set::const_iterator i = candidates.begin(); i != candidates.end(); ++i) P(i18n_format(" %s") - % describe_revision(project, *i)); + % describe_revision(projects, *i)); P(F("choose one with '%s update -r'") % ui.prog_name); E(false, F("multiple update candidates remain after selection")); } @@ -197,14 +197,14 @@ CMD(update, "update", "", CMD_REF(worksp } else { - complete(app.opts, app.lua, project, app.opts.revision_selectors[0](), chosen_rid); + complete(app.opts, app.lua, projects, app.opts.revision_selectors[0](), chosen_rid); } I(!null_id(chosen_rid)); // do this notification before checking to see if we can bail out early, // because when you are at one of several heads, and you hit update, you // want to know that merging would let you update further. - notify_if_multiple_heads(project, + notify_if_multiple_heads(projects.get_project_of_branch(app.opts.branchname), app.opts.branchname, app.opts.ignore_suspend_certs); if (old_rid == chosen_rid) @@ -421,7 +421,7 @@ CMD(merge, "merge", "", CMD_REF(tree), " { database db(app); key_store keys(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); if (args.size() != 0) throw usage(execid); @@ -430,8 +430,10 @@ CMD(merge, "merge", "", CMD_REF(tree), " F("please specify a branch, with --branch=BRANCH")); set heads; - project.get_branch_heads(app.opts.branchname, heads, - app.opts.ignore_suspend_certs); + projects + .get_project_of_branch(app.opts.branchname) + .get_branch_heads(app.opts.branchname, heads, + app.opts.ignore_suspend_certs); N(heads.size() != 0, F("branch '%s' is empty") % app.opts.branchname); if (heads.size() == 1) @@ -467,12 +469,14 @@ CMD(merge, "merge", "", CMD_REF(tree), " revpair p = find_heads_to_merge(db, heads); - merge_two(app.opts, app.lua, project, keys, + merge_two(app.opts, app.lua, projects.get_project_of_branch(app.opts.branchname), keys, p.first, p.second, app.opts.branchname, string("merge"), std::cout, false); - project.get_branch_heads(app.opts.branchname, heads, - app.opts.ignore_suspend_certs); + projects + .get_project_of_branch(app.opts.branchname) + .get_branch_heads(app.opts.branchname, heads, + app.opts.ignore_suspend_certs); pass++; } @@ -486,7 +490,7 @@ CMD(merge, "merge", "", CMD_REF(tree), " revision_id right = *i++; I(i == heads.end()); - merge_two(app.opts, app.lua, project, keys, + merge_two(app.opts, app.lua, projects.get_project_of_branch(app.opts.branchname), keys, left, right, app.opts.branchname, string("merge"), std::cout, false); P(F("note: your workspaces have not been updated")); @@ -539,16 +543,20 @@ CMD(merge_into_dir, "merge_into_dir", "" { database db(app); key_store keys(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); set src_heads, dst_heads; if (args.size() != 3) throw usage(execid); - project.get_branch_heads(branch_name(idx(args, 0)()), src_heads, - app.opts.ignore_suspend_certs); - project.get_branch_heads(branch_name(idx(args, 1)()), dst_heads, - app.opts.ignore_suspend_certs); + projects + .get_project_of_branch(branch_name(idx(args, 0)())) + .get_branch_heads(branch_name(idx(args, 0)()), src_heads, + app.opts.ignore_suspend_certs); + projects + .get_project_of_branch(branch_name(idx(args, 1)())) + .get_branch_heads(branch_name(idx(args, 1)()), dst_heads, + app.opts.ignore_suspend_certs); N(src_heads.size() != 0, F("branch '%s' is empty") % idx(args, 0)()); N(src_heads.size() == 1, F("branch '%s' is not merged") % idx(args, 0)()); @@ -579,8 +587,10 @@ CMD(merge_into_dir, "merge_into_dir", "" P(F("no merge necessary; putting %s in branch '%s'") % *src_i % idx(args, 1)()); transaction_guard guard(db); - project.put_revision_in_branch(keys, *src_i, - branch_name(idx(args, 1)())); + projects + .get_project_of_branch(branch_name(idx(args, 1)())) + .put_revision_in_branch(keys, *src_i, + branch_name(idx(args, 1)())); guard.commit(); } else @@ -662,11 +672,13 @@ CMD(merge_into_dir, "merge_into_dir", "" % idx(args, 1) % *dst_i).str()); - project.put_standard_certs_from_options(app.opts, app.lua, - keys, - merged, - branch_name(idx(args, 1)()), - log_message); + projects + .get_project_of_branch(branch_name(idx(args, 1)())) + .put_standard_certs_from_options(app.opts, app.lua, + keys, + merged, + branch_name(idx(args, 1)()), + log_message); guard.commit(); P(F("[merged] %s") % merged); @@ -692,7 +704,7 @@ CMD(merge_into_workspace, "merge_into_wo database db(app); workspace work(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); // Get the current state of the workspace. @@ -722,7 +734,7 @@ CMD(merge_into_workspace, "merge_into_wo calculate_ident(working_rev, working_rid); } - complete(app.opts, app.lua, project, idx(args, 0)(), right_id); + complete(app.opts, app.lua, projects, idx(args, 0)(), right_id); db.get_roster(right_id, right); N(!(left_id == right_id), F("workspace is already at revision %s") % left_id); @@ -793,15 +805,15 @@ CMD(explicit_merge, "explicit_merge", "" { database db(app); key_store keys(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); revision_id left, right; branch_name branch; if (args.size() != 3) throw usage(execid); - complete(app.opts, app.lua, project, idx(args, 0)(), left); - complete(app.opts, app.lua, project, idx(args, 1)(), right); + complete(app.opts, app.lua, projects, idx(args, 0)(), left); + complete(app.opts, app.lua, projects, idx(args, 1)(), right); branch = branch_name(idx(args, 2)()); N(!(left == right), @@ -816,7 +828,7 @@ CMD(explicit_merge, "explicit_merge", "" // avoid failure after lots of work cache_user_key(app.opts, app.lua, db, keys); - merge_two(app.opts, app.lua, project, keys, + merge_two(app.opts, app.lua, projects.get_project_of_branch(branch), keys, left, right, branch, string("explicit merge"), std::cout, false); } @@ -918,13 +930,13 @@ CMD(show_conflicts, "show_conflicts", "" options::opts::none) { database db(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); if (args.size() != 2) throw usage(execid); revision_id l_id, r_id; - complete(app.opts, app.lua, project, idx(args,0)(), l_id); - complete(app.opts, app.lua, project, idx(args,1)(), r_id); + complete(app.opts, app.lua, projects, idx(args,0)(), l_id); + complete(app.opts, app.lua, projects, idx(args,1)(), r_id); show_conflicts_core(db, l_id, r_id, false, std::cout); } @@ -952,7 +964,7 @@ CMD_AUTOMATE(show_conflicts, N_("[LEFT_R options::opts::branch) { database db(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); revision_id l_id, r_id; if (args.size() == 0) @@ -962,8 +974,10 @@ CMD_AUTOMATE(show_conflicts, N_("[LEFT_R F("please specify a branch, with --branch=BRANCH")); set heads; - project.get_branch_heads(app.opts.branchname, heads, - app.opts.ignore_suspend_certs); + projects + .get_project_of_branch(app.opts.branchname) + .get_branch_heads(app.opts.branchname, heads, + app.opts.ignore_suspend_certs); N(heads.size() >= 2, F("branch '%s' has %d heads; must be at least 2 for show_conflicts") % app.opts.branchname % heads.size()); @@ -985,8 +999,8 @@ CMD_AUTOMATE(show_conflicts, N_("[LEFT_R else if (args.size() == 2) { // get ids from args - complete(app.opts, app.lua, project, idx(args,0)(), l_id); - complete(app.opts, app.lua, project, idx(args,1)(), r_id); + complete(app.opts, app.lua, projects, idx(args,0)(), l_id); + complete(app.opts, app.lua, projects, idx(args,1)(), r_id); } else N(false, F("wrong argument count")); @@ -1009,13 +1023,13 @@ CMD(pluck, "pluck", "", CMD_REF(workspac { database db(app); workspace work(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); // Work out our arguments revision_id from_rid, to_rid; if (app.opts.revision_selectors.size() == 1) { - complete(app.opts, app.lua, project, idx(app.opts.revision_selectors, 0)(), to_rid); + complete(app.opts, app.lua, projects, idx(app.opts.revision_selectors, 0)(), to_rid); std::set parents; db.get_revision_parents(to_rid, parents); N(parents.size() == 1, @@ -1029,8 +1043,8 @@ CMD(pluck, "pluck", "", CMD_REF(workspac } else if (app.opts.revision_selectors.size() == 2) { - complete(app.opts, app.lua, project, idx(app.opts.revision_selectors, 0)(), from_rid); - complete(app.opts, app.lua, project, idx(app.opts.revision_selectors, 1)(), to_rid); + complete(app.opts, app.lua, projects, idx(app.opts.revision_selectors, 0)(), from_rid); + complete(app.opts, app.lua, projects, idx(app.opts.revision_selectors, 1)(), to_rid); } else throw usage(execid); @@ -1194,10 +1208,12 @@ CMD(heads, "heads", "", CMD_REF(tree), " F("please specify a branch, with --branch=BRANCH")); database db(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); - project.get_branch_heads(app.opts.branchname, heads, - app.opts.ignore_suspend_certs); + projects + .get_project_of_branch(app.opts.branchname) + .get_branch_heads(app.opts.branchname, heads, + app.opts.ignore_suspend_certs); if (heads.size() == 0) P(F("branch '%s' is empty") % app.opts.branchname); @@ -1208,7 +1224,7 @@ CMD(heads, "heads", "", CMD_REF(tree), " for (set::const_iterator i = heads.begin(); i != heads.end(); ++i) - cout << describe_revision(project, *i) << '\n'; + cout << describe_revision(projects, *i) << '\n'; } CMD(get_roster, "get_roster", "", CMD_REF(debug), N_("[REVID]"), @@ -1270,9 +1286,9 @@ CMD(get_roster, "get_roster", "", CMD_RE else if (args.size() == 1) { database db(app); - project_t project(db); + project_set projects(db, app.lua, app.opts); revision_id rid; - complete(app.opts, app.lua, project, idx(args, 0)(), rid); + complete(app.opts, app.lua, projects, idx(args, 0)(), rid); I(!null_id(rid)); db.get_roster(rid, roster, mm); } ============================================================ --- netsync.cc a0f07bb45dd6a8a123925708da0bd97df023a597 +++ netsync.cc 7f523fa35df92eb2ae1f04bc790731d8609b97f1 @@ -705,7 +705,7 @@ session::~session() certs.insert(make_pair(j->key, make_pair(j->name, j->value))); revision_data rdat; - project.db.get_revision(*i, rdat); + projects.db.get_revision(*i, rdat); lua.hook_note_netsync_revision_sent(*i, rdat, certs, session_id); } @@ -1398,7 +1398,7 @@ session::process_hello_cmd(rsa_keypair_i if (projects.db.public_key_exists(their_keyname)) { rsa_pub_key tmp; - project.db.get_key(their_keyname, tmp); + projects.db.get_key(their_keyname, tmp); E(keys_match(their_keyname, tmp, their_keyname, their_key), F("the server sent a key with the key id '%s'\n" @@ -1413,7 +1413,7 @@ session::process_hello_cmd(rsa_keypair_i { // this should now always return true since we just checked // for the existence of this particular key - I(project.db.put_key(their_keyname, their_key)); + I(projects.db.put_key(their_keyname, their_key)); W(F("saving public key for %s to database") % their_keyname); }