# # # patch "NEWS" # from [b4ae9a844b5b0f8f0f555c0f3fedf71dd3ae8d9a] # to [5ea1e350f90c57612a951230c3c593cd415ad4e0] # # patch "cmd_diff_log.cc" # from [37b1cfffa001ccc5b813fe6f0e84dc6a5dc3996e] # to [1f1811415796db5326a6c6be183acb4bf72b900b] # ============================================================ --- NEWS b4ae9a844b5b0f8f0f555c0f3fedf71dd3ae8d9a +++ NEWS 5ea1e350f90c57612a951230c3c593cd415ad4e0 @@ -31,6 +31,10 @@ xxx xxx xx xx:xx:xx UTC 2010 - monotone no longer saves changed options from the command line back to _MTN/options in case the command execution was unsuccessful. + - The 'log' command no longer crashes if it is executed in a workspace + whose parent revision(s) do not exist in the specified database + (fixes monotone bug #29677). + - In 0.46, spurious network disconnects could occur when transferring sufficiently large items (files, diffs, revisions). This was fixed in 0.47 but not noted in the release notes at that time ============================================================ --- cmd_diff_log.cc 37b1cfffa001ccc5b813fe6f0e84dc6a5dc3996e +++ cmd_diff_log.cc 1f1811415796db5326a6c6be183acb4bf72b900b @@ -781,9 +781,13 @@ CMD(log, "log", "", CMD_REF(informative) for (edge_map::const_iterator i = rev.edges.begin(); i != rev.edges.end(); i++) { - starting_revs.insert(edge_old_revision(i)); + revision_id rid = edge_old_revision(i); + E(db.revision_exists(rid), origin::user, + F("workspace parent revision '%s' not found - " + "did you specify a wrong database?") % rid); + starting_revs.insert(rid); if (i == rev.edges.begin()) - first_rid = edge_old_revision(i); + first_rid = rid; } } else if (!app.opts.from.empty())