# # # patch "ChangeLog" # from [906e85231d09d210be3e40d453446c4ec4369c74] # to [6d0876defc752f25268b2c561b8fbd27a10b9233] # # patch "cmd_files.cc" # from [36fa0ae00f619ebe32d6e0ab31f84f639bfe15f1] # to [c7f2734ad4e1732d2cbc495c1d033ea6c3a56de9] # # patch "tests/two_parent_workspace_commands_that_fail/__driver__.lua" # from [40dba9452f511807830c8dfc5d2db02557a1d11c] # to [46ab6700635529ab40a24d2df3a79053bc7eeafe] # ============================================================ --- ChangeLog 906e85231d09d210be3e40d453446c4ec4369c74 +++ ChangeLog 6d0876defc752f25268b2c561b8fbd27a10b9233 @@ -1,3 +1,9 @@ +2007-02-09 Zack Weinberg + + * cmd_files.cc (cat, automate get_file_of): Fail gracefully in a + two-parent workspace, unless given -r. + * tests/two_parent_workspace_commands_that_fail: Test them. + 2007-02-09 Matthew Gregan * work.cc (maybe_update_inodeprints): Update for multi-parent ============================================================ --- cmd_files.cc 36fa0ae00f619ebe32d6e0ab31f84f639bfe15f1 +++ cmd_files.cc c7f2734ad4e1732d2cbc495c1d033ea6c3a56de9 @@ -254,7 +254,12 @@ CMD(cat, N_("informative"), if (app.opts.revision_selectors.size() == 0) { app.require_workspace(); - app.work.get_revision_id(rid); + + parent_map parents; + app.work.get_parent_rosters(parents); + N(parents.size() == 1, + F("this command can only be used in a single-parent workspace")); + rid = parent_id(parents.begin()); } else complete(app, idx(app.opts.revision_selectors, 0)(), rid); @@ -304,7 +309,12 @@ AUTOMATE(get_file_of, N_("FILENAME"), op if (app.opts.revision_selectors.size() == 0) { app.require_workspace(); - app.work.get_revision_id(rid); + + parent_map parents; + app.work.get_parent_rosters(parents); + N(parents.size() == 1, + F("this command can only be used in a single-parent workspace")); + rid = parent_id(parents.begin()); } else complete(app, idx(app.opts.revision_selectors, 0)(), rid); ============================================================ --- tests/two_parent_workspace_commands_that_fail/__driver__.lua 40dba9452f511807830c8dfc5d2db02557a1d11c +++ tests/two_parent_workspace_commands_that_fail/__driver__.lua 46ab6700635529ab40a24d2df3a79053bc7eeafe @@ -37,6 +37,12 @@ check(mtn("automate", "content_diff", "- check(mtn("diff", "-r", left), 0, false, nil) check(mtn("automate", "content_diff", "-r", right), 0, false, nil) +-- similarly for cat +check(mtn("cat", "testfile"), 1, nil, diag) +check(mtn("automate", "get_file_of", "testfile"), 1, nil, diag) +check(mtn("cat", "-r", left, "testfile"), 0, false, nil) +check(mtn("automate", "get_file_of", "-r", right, "testfile"), 0, false, nil) + -- revert and update: to where? check(mtn("revert", "."), 1, nil, diag) check(mtn("update"), 1, nil, diag)