# # # patch "work.cc" # from [dd642c4fb0d409f31421f8f0945656994cd9f619] # to [f7b4308b3debf6578e90b4bee052decef5971bff] # # patch "work.hh" # from [884c5981949c924b1f40d950809d862f4f6de2f4] # to [b2a0f077a4ad9482283a6dab697778ff0815dc1e] # ============================================================ --- work.cc dd642c4fb0d409f31421f8f0945656994cd9f619 +++ work.cc f7b4308b3debf6578e90b4bee052decef5971bff @@ -292,10 +292,25 @@ void } void +workspace::require_parents_in_db(database & db, + revision_t const & rev) +{ + for (edge_map::const_iterator i = rev.edges.begin(); + i != rev.edges.end(); i++) + { + revision_id const & parent(edge_old_revision(i)); + E(db.revision_exists(parent), origin::user, + F("parent revision %s does not exist, did you specify the wrong database?") + % parent); + } +} + +void workspace::get_parent_rosters(database & db, parent_map & parents) { revision_t rev; get_work_rev(rev); + require_parents_in_db(db, rev); parents.clear(); for (edge_map::const_iterator i = rev.edges.begin(); @@ -314,6 +329,7 @@ workspace::get_current_roster_shape(data { revision_t rev; get_work_rev(rev); + require_parents_in_db(db, rev); revision_id new_rid(fake_id()); // If there is just one parent, it might be the null ID, which ============================================================ --- work.hh 884c5981949c924b1f40d950809d862f4f6de2f4 +++ work.hh b2a0f077a4ad9482283a6dab697778ff0815dc1e @@ -102,6 +102,9 @@ private: // This is used by a lot of instance methods. lua_hooks & lua; + // Give a nice error if the parent revisions aren't in the db + void require_parents_in_db(database & db, revision_t const & rev); + // Interfaces. public: static void require_workspace();