# # # patch "cmd_ws_commit.cc" # from [cc11f1d6b257a98ee0af49e1ae4bdc842fa9da86] # to [2cfe79c0f18746d96360be6adf0a1e71e5920424] # # patch "database.cc" # from [731f98750a28678766b448531208927af8779836] # to [eeff84c4d2214d0bc327e3060dbcb1e583dfde41] # # patch "lua-testsuite.lua" # from [d2db92ea969f6b5a4a7cd2d6a0dc6c528b41bbfa] # to [132d87aa7f69e7b4d5a8351e57a3a9de8055509a] # # patch "revision.cc" # from [69b03759d9c105b3ab20bba9b705beac078b69d1] # to [632e6cc1a0d497a2bbadc9e4eafa8220235ac4d8] # ============================================================ --- cmd_ws_commit.cc cc11f1d6b257a98ee0af49e1ae4bdc842fa9da86 +++ cmd_ws_commit.cc 2cfe79c0f18746d96360be6adf0a1e71e5920424 @@ -1126,11 +1126,15 @@ CMD(commit, "commit", "ci", CMD_REF(work P(F("beginning commit on branch '%s'") % app.opts.branchname); - L(FL("new manifest '%s'\n" - "new revision '%s'\n") - % restricted_rev.new_manifest - % restricted_rev_id); + if (global_sanity.debug_p()) + { + hexenc mid(encode_hexenc(restricted_rev.new_manifest.inner()())); + hexenc rid(encode_hexenc(restricted_rev_id.inner()())); + L(FL("new manifest '%s'\n" + "new revision '%s'\n") % mid % rid); + } + process_commit_message_args(app.opts, log_message_given, log_message); N(!(log_message_given && app.work.has_contents_user_log()), @@ -1188,7 +1192,9 @@ CMD(commit, "commit", "ci", CMD_REF(work W(F("revision %s already in database") % restricted_rev_id); else { - L(FL("inserting new revision %s") % restricted_rev_id); + if (global_sanity.debug_p()) + L(FL("inserting new revision %s") + % encode_hexenc(restricted_rev_id.inner()())); for (edge_map::const_iterator edge = restricted_rev.edges.begin(); edge != restricted_rev.edges.end(); @@ -1208,13 +1214,17 @@ CMD(commit, "commit", "ci", CMD_REF(work if (db.file_version_exists(new_content)) { - L(FL("skipping file delta %s, already in database") - % delta_entry_dst(i)); + if (global_sanity.debug_p()) + L(FL("skipping file delta %s, already in database") + % encode_hexenc(delta_entry_dst(i).inner()())); } else if (db.file_version_exists(old_content)) { - L(FL("inserting delta %s -> %s") - % old_content % new_content); + if (global_sanity.debug_p()) + L(FL("inserting delta %s -> %s") + % encode_hexenc(old_content.inner()()) + % encode_hexenc(new_content.inner()())); + file_data old_data; data new_data; db.get_file_version(old_content, old_data); @@ -1235,7 +1245,8 @@ CMD(commit, "commit", "ci", CMD_REF(work // If we don't err out here, the database will later. E(false, F("Your database is missing version %s of file '%s'") - % old_content % path); + % encode_hexenc(old_content.inner()()) + % path); } for (map::const_iterator @@ -1245,7 +1256,9 @@ CMD(commit, "commit", "ci", CMD_REF(work file_path path = i->first; file_id new_content = i->second; - L(FL("inserting full version %s") % new_content); + if (global_sanity.debug_p()) + L(FL("inserting full version %s") + % encode_hexenc(new_content.inner()())); data new_data; read_data(path, new_data); // sanity check @@ -1277,7 +1290,8 @@ CMD(commit, "commit", "ci", CMD_REF(work // small race condition here... app.work.put_work_rev(remaining); - P(F("committed revision %s") % restricted_rev_id); + P(F("committed revision %s") + % encode_hexenc(restricted_rev_id.inner()())); app.work.blank_user_log(); ============================================================ --- database.cc 731f98750a28678766b448531208927af8779836 +++ database.cc eeff84c4d2214d0bc327e3060dbcb1e583dfde41 @@ -1512,7 +1512,7 @@ database_impl::write_delayed_file(file_i I(tid == ident); // and then write things to the db query q("INSERT INTO files (id, data) VALUES (?, ?)"); - execute(q % blob(decode_hexenc(ident.inner()())) % blob(dat_packed())); + execute(q % blob(ident.inner()()) % blob(dat_packed())); } void @@ -1643,9 +1643,10 @@ database_impl::get_version(id const & id vcache.insert_clean(curr, data(tmp)); } - L(FL("following delta %s -> %s") - % encode_hexenc(curr()) - % encode_hexenc(nxt())); + if (global_sanity.debug_p()) + L(FL("following delta %s -> %s") + % encode_hexenc(curr()) + % encode_hexenc(nxt())); delta del; get_file_or_manifest_delta_unchecked(nxt, curr, del, delta_table); apply_delta(appl, del()); @@ -1855,9 +1856,10 @@ database::get_roster_version(revision_id i != selected_path.rend(); ++i) { id const nxt = *i; - L(FL("following delta %s -> %s") - % encode_hexenc(curr()) - % encode_hexenc(nxt())); + if (global_sanity.debug_p()) + L(FL("following delta %s -> %s") + % encode_hexenc(curr()) + % encode_hexenc(nxt())); roster_delta del; imp->get_roster_delta(nxt, curr, del); apply_roster_delta(del, *roster, *marking); @@ -1920,7 +1922,7 @@ database::revision_exists(revision_id co { results res; query q("SELECT id FROM revisions WHERE id = ?"); - imp->fetch(res, one_col, any_rows, q % blob(decode_hexenc(id.inner()()))); + imp->fetch(res, one_col, any_rows, q % blob(id.inner()())); I(res.size() <= 1); return res.size() == 1; } @@ -2099,8 +2101,8 @@ database::get_revision_ancestry(rev_ance imp->fetch(res, 2, any_rows, query("SELECT parent,child FROM revision_ancestry")); for (size_t i = 0; i < res.size(); ++i) - graph.insert(make_pair(revision_id(encode_hexenc(res[i][0])), - revision_id(encode_hexenc(res[i][1])))); + graph.insert(make_pair(revision_id(res[i][0]), + revision_id(res[i][1]))); } void @@ -2115,9 +2117,9 @@ database::get_revision_parents(revision_ parents.clear(); imp->fetch(res, one_col, any_rows, query("SELECT parent FROM revision_ancestry WHERE child = ?") - % blob(decode_hexenc(id.inner()()))); + % blob(id.inner()())); for (size_t i = 0; i < res.size(); ++i) - parents.insert(revision_id(encode_hexenc(res[i][0]))); + parents.insert(revision_id(res[i][0])); imp->parent_cache.insert(make_pair(id, parents)); } @@ -2135,9 +2137,9 @@ database::get_revision_children(revision children.clear(); imp->fetch(res, one_col, any_rows, query("SELECT child FROM revision_ancestry WHERE parent = ?") - % blob(decode_hexenc(id.inner()()))); + % blob(id.inner()())); for (size_t i = 0; i < res.size(); ++i) - children.insert(revision_id(encode_hexenc(res[i][0]))); + children.insert(revision_id(res[i][0])); } void @@ -2151,7 +2153,7 @@ database::get_leaves(set & "ON revisions.id = revision_ancestry.parent " "WHERE revision_ancestry.child IS null")); for (size_t i = 0; i < res.size(); ++i) - leaves.insert(revision_id(encode_hexenc(res[i][0]))); + leaves.insert(revision_id(res[i][0])); } @@ -2181,7 +2183,7 @@ database::get_revision(revision_id const results res; imp->fetch(res, one_col, one_row, query("SELECT data FROM revisions WHERE id = ?") - % blob(decode_hexenc(id.inner()()))); + % blob(id.inner()())); gzip gzdata(res[0][0]); data rdat; @@ -2213,7 +2215,7 @@ database::get_rev_height(revision_id con results res; imp->fetch(res, one_col, one_row, query("SELECT height FROM heights WHERE revision = ?") - % blob(decode_hexenc(id.inner()()))); + % blob(id.inner()())); I(res.size() == 1); @@ -2239,7 +2241,7 @@ database::put_rev_height(revision_id con imp->height_cache.erase(id); imp->execute(query("INSERT INTO heights VALUES(?, ?)") - % blob(decode_hexenc(id.inner()())) + % blob(id.inner()()) % blob(height())); } @@ -2304,7 +2306,9 @@ database::put_revision(revision_id const if (revision_exists(new_id)) { - L(FL("revision '%s' already exists in db") % new_id); + if (global_sanity.debug_p()) + L(FL("revision '%s' already exists in db") + % encode_hexenc(new_id.inner()())); return false; } @@ -2319,8 +2323,10 @@ database::put_revision(revision_id const if (!edge_old_revision(i).inner()().empty() && !revision_exists(edge_old_revision(i))) { - W(F("missing prerequisite revision '%s'") % edge_old_revision(i)); - W(F("dropping revision '%s'") % new_id); + W(F("missing prerequisite revision '%s'") + % encode_hexenc(edge_old_revision(i).inner()())); + W(F("dropping revision '%s'") + % encode_hexenc(new_id.inner()())); return false; } @@ -2330,8 +2336,10 @@ database::put_revision(revision_id const { if (! file_version_exists(a->second)) { - W(F("missing prerequisite file '%s'") % a->second); - W(F("dropping revision '%s'") % new_id); + W(F("missing prerequisite file '%s'") + % encode_hexenc(a->second.inner()())); + W(F("dropping revision '%s'") + % encode_hexenc(new_id.inner()())); return false; } } @@ -2346,16 +2354,18 @@ database::put_revision(revision_id const if (! file_version_exists(delta_entry_src(d))) { W(F("missing prerequisite file pre-delta '%s'") - % delta_entry_src(d)); - W(F("dropping revision '%s'") % new_id); + % encode_hexenc(delta_entry_src(d).inner()())); + W(F("dropping revision '%s'") + % encode_hexenc(new_id.inner()())); return false; } if (! file_version_exists(delta_entry_dst(d))) { W(F("missing prerequisite file post-delta '%s'") - % delta_entry_dst(d)); - W(F("dropping revision '%s'") % new_id); + % encode_hexenc(delta_entry_dst(d).inner()())); + W(F("dropping revision '%s'") + % encode_hexenc(new_id.inner()())); return false; } } @@ -2370,15 +2380,15 @@ database::put_revision(revision_id const gzip d_packed; encode_gzip(d.inner(), d_packed); imp->execute(query("INSERT INTO revisions VALUES(?, ?)") - % blob(decode_hexenc(new_id.inner()())) + % blob(new_id.inner()()) % blob(d_packed())); for (edge_map::const_iterator e = rev.edges.begin(); e != rev.edges.end(); ++e) { imp->execute(query("INSERT INTO revision_ancestry VALUES(?, ?)") - % blob(decode_hexenc(edge_old_revision(e).inner()())) - % blob(decode_hexenc(new_id.inner()()))); + % blob(edge_old_revision(e).inner()()) + % blob(new_id.inner()())); } // We don't have to clear out the child's entry in the parent_cache, // because the child did not exist before this function was called, so @@ -2524,17 +2534,17 @@ database::delete_existing_rev_and_certs( // Kill the certs, ancestry, and revision. imp->execute(query("DELETE from revision_certs WHERE id = ?") - % blob(decode_hexenc(rid.inner()()))); + % blob(rid.inner()())); imp->cert_stamper.note_change(); imp->execute(query("DELETE from revision_ancestry WHERE child = ?") - % blob(decode_hexenc(rid.inner()()))); + % blob(rid.inner()())); imp->execute(query("DELETE from heights WHERE revision = ?") - % blob(decode_hexenc(rid.inner()()))); + % blob(rid.inner()())); imp->execute(query("DELETE from revisions WHERE id = ?") - % blob(decode_hexenc(rid.inner()()))); + % blob(rid.inner()())); guard.commit(); } @@ -3074,7 +3084,7 @@ database::get_revisions_with_cert(cert_n decode_base64(val, binvalue); imp->fetch(res, one_col, any_rows, q % text(name()) % blob(binvalue())); for (results::const_iterator i = res.begin(); i != res.end(); ++i) - revisions.insert(revision_id(encode_hexenc((*i)[0]))); + revisions.insert(revision_id((*i)[0])); return imp->cert_stamper.get_indicator(); } @@ -3197,16 +3207,20 @@ database_impl::prefix_matching_constrain { // no upper bound needed, as the lower bound is // 0xffffff... - L(FL("prefix_matcher: only lower bound ('%s')") - % encode_hexenc(lower_bound)); + if (global_sanity.debug_p()) + L(FL("prefix_matcher: only lower bound ('%s')") + % encode_hexenc(lower_bound)); + constraint = query(colname + " > ?") % blob(lower_bound); } else { - L(FL("prefix_matcher: lower bound ('%s') and upper bound ('%s')") - % encode_hexenc(lower_bound) - % encode_hexenc(upper_bound)); + if (global_sanity.debug_p()) + L(FL("prefix_matcher: lower bound ('%s') and upper bound ('%s')") + % encode_hexenc(lower_bound) + % encode_hexenc(upper_bound)); + constraint = query(colname + " BETWEEN ? AND ?") % blob(lower_bound) % blob(upper_bound); @@ -3228,7 +3242,7 @@ database::complete(string const & partia constraint.sql_cmd)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(revision_id(encode_hexenc(res[i][0]))); + completions.insert(revision_id(res[i][0])); } @@ -3246,7 +3260,7 @@ database::complete(string const & partia constraint.sql_cmd)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(file_id(encode_hexenc(res[i][0]))); + completions.insert(file_id(res[i][0])); res.clear(); @@ -3255,7 +3269,7 @@ database::complete(string const & partia constraint.sql_cmd)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(file_id(encode_hexenc(res[i][0]))); + completions.insert(file_id(res[i][0])); } void @@ -3272,7 +3286,7 @@ database::complete(string const & partia constraint.sql_cmd)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(make_pair(key_id(encode_hexenc(res[i][0])), + completions.insert(make_pair(key_id(res[i][0]), utf8(res[i][1]))); } @@ -3293,7 +3307,7 @@ database::select_parent(string const & p constraint.sql_cmd)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(revision_id(encode_hexenc(res[i][0]))); + completions.insert(revision_id(res[i][0])); } void @@ -3308,7 +3322,7 @@ database::select_cert(string const & cer % text(certname)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(revision_id(encode_hexenc(res[i][0]))); + completions.insert(revision_id(res[i][0])); } void @@ -3324,7 +3338,7 @@ database::select_cert(string const & cer % text(certname) % text(certvalue)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(revision_id(encode_hexenc(res[i][0]))); + completions.insert(revision_id(res[i][0])); } void @@ -3344,7 +3358,7 @@ database::select_author_tag_or_branch(st % text(branch_cert_name()) % text(pattern)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(revision_id(encode_hexenc(res[i][0]))); + completions.insert(revision_id(res[i][0])); } void @@ -3363,7 +3377,7 @@ database::select_date(string const & dat imp->fetch(res, 1, any_rows, q % text(date_cert_name()) % text(date)); for (size_t i = 0; i < res.size(); ++i) - completions.insert(revision_id(encode_hexenc(res[i][0]))); + completions.insert(revision_id(res[i][0])); } // epochs @@ -3392,7 +3406,7 @@ database::get_epoch(epoch_id const & eid imp->fetch(res, 2, any_rows, query("SELECT branch, epoch FROM branch_epochs" " WHERE hash = ?") - % blob(decode_hexenc(eid.inner()()))); + % blob(eid.inner()())); I(res.size() == 1); branch = branch_name(idx(idx(res, 0), 0)); epo = epoch_data(encode_hexenc(idx(idx(res, 0), 1))); @@ -3404,7 +3418,7 @@ database::epoch_exists(epoch_id const & results res; imp->fetch(res, one_col, any_rows, query("SELECT hash FROM branch_epochs WHERE hash = ?") - % blob(decode_hexenc(eid.inner()()))); + % blob(eid.inner()())); I(res.size() == 1 || res.size() == 0); return res.size() == 1; } @@ -3416,9 +3430,9 @@ database::set_epoch(branch_name const & epoch_hash_code(branch, epo, eid); I(epo.inner()().size() == constants::epochlen); imp->execute(query("INSERT OR REPLACE INTO branch_epochs VALUES(?, ?, ?)") - % blob(decode_hexenc(eid.inner()())) + % blob(eid.inner()()) % blob(branch()) - % blob(decode_hexenc(epo.inner()()))); + % blob(epo.inner()())); } void ============================================================ --- lua-testsuite.lua d2db92ea969f6b5a4a7cd2d6a0dc6c528b41bbfa +++ lua-testsuite.lua 132d87aa7f69e7b4d5a8351e57a3a9de8055509a @@ -9,7 +9,7 @@ function safe_mtn(...) err("'mtn' environment variable not set") end end - return {monotone_path, "--norc", "--root=" .. test.root, + return {monotone_path, "--debug", "--norc", "--root=" .. test.root, "--confdir="..test.root, unpack(arg)} end ============================================================ --- revision.cc 69b03759d9c105b3ab20bba9b705beac078b69d1 +++ revision.cc 632e6cc1a0d497a2bbadc9e4eafa8220235ac4d8 @@ -634,8 +634,13 @@ make_revision(revision_id const & old_re make_cset(old_roster, new_roster, *cs); calculate_ident(new_roster, rev.new_manifest); - L(FL("new manifest_id is %s") % rev.new_manifest); + if (global_sanity.debug_p()) + { + hexenc mid(encode_hexenc(rev.new_manifest.inner()())); + L(FL("new manifest_id is %s") % mid); + } + safe_insert(rev.edges, make_pair(old_rev_id, cs)); rev.made_for = made_for_database; } @@ -657,8 +662,13 @@ make_revision(revision_id const & old_re rev.edges.clear(); calculate_ident(new_roster, rev.new_manifest); - L(FL("new manifest_id is %s") % rev.new_manifest); + if (global_sanity.debug_p()) + { + hexenc mid(encode_hexenc(rev.new_manifest.inner()())); + L(FL("new manifest_id is %s") % mid); + } + safe_insert(rev.edges, make_pair(old_rev_id, cs)); rev.made_for = made_for_database; } @@ -680,7 +690,12 @@ make_revision(parent_map const & old_ros rev.edges = edges; calculate_ident(new_roster, rev.new_manifest); - L(FL("new manifest_id is %s") % rev.new_manifest); + + if (global_sanity.debug_p()) + { + hexenc mid(encode_hexenc(rev.new_manifest.inner()())); + L(FL("new manifest_id is %s") % mid); + } } static void @@ -692,16 +707,21 @@ recalculate_manifest_id_for_restricted_r // using one of the restricted csets. It doesn't matter which of the // parent roster/cset pairs we use for this; by construction, they must // all produce the same result. - revision_id id = parent_id(old_rosters.begin()); - roster_t restricted_roster = *(safe_get(old_rosters, id).first); + revision_id rid = parent_id(old_rosters.begin()); + roster_t restricted_roster = *(safe_get(old_rosters, rid).first); temp_node_id_source nis; editable_roster_base er(restricted_roster, nis); - safe_get(edges, id)->apply_to(er); + safe_get(edges, rid)->apply_to(er); calculate_ident(restricted_roster, rev.new_manifest); rev.edges = edges; - L(FL("new manifest_id is %s") % rev.new_manifest); + + if (global_sanity.debug_p()) + { + hexenc mid(encode_hexenc(rev.new_manifest.inner()())); + L(FL("new manifest_id is %s") % mid); + } } void @@ -1819,7 +1839,7 @@ parse_edge(basic_io::parser & parser, parser.esym(syms::old_revision); parser.hex(tmp); - old_rev = revision_id(tmp); + old_rev = revision_id(decode_hexenc(tmp)); parse_cset(parser, *cs); @@ -1844,7 +1864,7 @@ parse_revision(basic_io::parser & parser % tmp); parser.esym(syms::new_manifest); parser.hex(tmp); - rev.new_manifest = manifest_id(tmp); + rev.new_manifest = manifest_id(decode_hexenc(tmp)); while (parser.symp(syms::old_revision)) parse_edge(parser, rev.edges); rev.check_sane();