# # # add_dir "tests/two_parent_workspace_attrs" # # add_file "tests/two_parent_workspace_attrs/__driver__.lua" # content [abe04ad8bfd544146962c1280b976f5a0c5602d9] # # patch "ChangeLog" # from [0d87f6808e1eeb2b3b540785515c3ae18d32a09d] # to [810dec06b9e7d515d3044eb52db6d97f5ba80235] # # patch "cmd_ws_commit.cc" # from [bfe3d967696acea08b7b1ba51d42333f56636eaa] # to [cfa8ee108b983fc36c03e6676ad9c3db76cead1b] # # patch "tests/two_parent_workspace_pluck/__driver__.lua" # from [91d7f48e38e6d38281798af976ffff8864cb540e] # to [d07e8989375d64c19851c241c7c01cb0a045c5c8] # # patch "testsuite.lua" # from [c754cb1601a0c6a85f6e21ade08a712b09cd8816] # to [b427e447c21c1ce54c0f02e8f494a78f88aead77] # ============================================================ --- tests/two_parent_workspace_attrs/__driver__.lua abe04ad8bfd544146962c1280b976f5a0c5602d9 +++ tests/two_parent_workspace_attrs/__driver__.lua abe04ad8bfd544146962c1280b976f5a0c5602d9 @@ -0,0 +1,30 @@ +mtn_setup() + +addfile("testfile", "ancestor\nancestor") +addfile("attrfile", "this file has attributes") +commit() +anc = base_revision() + +writefile("testfile", "left\nancestor") +check(mtn("attr", "set", "attrfile", "my other car", "made of meat"), + 0, nil, nil) +commit() +left = base_revision() + +revert_to(anc) +writefile("testfile", "ancestor\nright") +commit() +right = base_revision() + +check(mtn("merge_into_workspace", left), 0, false, false) +check(qgrep("left", "testfile")) +check(qgrep("right", "testfile")) +check(not qgrep("ancestor", "testfile")) +check(mtn("attr", "get", "attrfile", "my other car"), + 0, "attrfile : my other car=made of meat\n", nil) +check(mtn("attr", "set", "testfile", "astral cupcake", "pink frosted"), + 0, nil, nil) +check(mtn("attr", "drop", "attrfile", "my other car"), + 0, nil, nil) + +commit() ============================================================ --- ChangeLog 0d87f6808e1eeb2b3b540785515c3ae18d32a09d +++ ChangeLog 810dec06b9e7d515d3044eb52db6d97f5ba80235 @@ -1,5 +1,10 @@ 2007-02-07 Zack Weinberg + * cmd_ws_commit.cc (attr): Work in a two-parent workspace. + * tests/two_parent_workspace_attrs: New test. + * tests/two_parent_workspace_pluck: Make sure we can commit the + result of our manipulations. + * automate.cc (inventory, get_base_revision_id): Fail gracefully in a two-parent workspace. (get_current_revision_id, get_manifest_of): Work in a two-parent ============================================================ --- cmd_ws_commit.cc bfe3d967696acea08b7b1ba51d42333f56636eaa +++ cmd_ws_commit.cc cfa8ee108b983fc36c03e6676ad9c3db76cead1b @@ -613,13 +613,12 @@ CMD(attr, N_("workspace"), N_("set PATH if (args.size() < 2 || args.size() > 4) throw usage(name); - roster_t old_roster, new_roster; + roster_t new_roster; temp_node_id_source nis; app.require_workspace(); - app.work.get_base_and_current_roster_shape(old_roster, new_roster, nis); + app.work.get_current_roster_shape(new_roster, nis); - file_path path = file_path_external(idx(args,1)); split_path sp; path.split(sp); @@ -660,11 +659,12 @@ CMD(attr, N_("workspace"), N_("set PATH else throw usage(name); } - revision_id base; - app.work.get_revision_id(base); + parent_map parents; + app.work.get_parent_rosters(parents); + revision_t new_work; - make_revision_for_workspace(base, old_roster, new_roster, new_work); + make_revision_for_workspace(parents, new_roster, new_work); app.work.put_work_rev(new_work); app.work.update_any_attrs(); } ============================================================ --- tests/two_parent_workspace_pluck/__driver__.lua 91d7f48e38e6d38281798af976ffff8864cb540e +++ tests/two_parent_workspace_pluck/__driver__.lua d07e8989375d64c19851c241c7c01cb0a045c5c8 @@ -27,3 +27,6 @@ check(qgrep("brawwk brawwk", "pluckfile" check(mtn("pluck", "-r", pluckrev), 0, false, false) check(qgrep("brawwk brawwk", "pluckfile")) + +remove("_MTN/log") -- or commit() will get a bogus failure +commit() ============================================================ --- testsuite.lua c754cb1601a0c6a85f6e21ade08a712b09cd8816 +++ testsuite.lua b427e447c21c1ce54c0f02e8f494a78f88aead77 @@ -709,6 +709,7 @@ table.insert(tests, "merge_into_workspac table.insert(tests, "merge_into_workspace_no_changes") table.insert(tests, "merge_into_workspace_files_added") table.insert(tests, "merge_into_workspace_attr_corpse") +table.insert(tests, "merge_into_workspace_same_rev") table.insert(tests, "two_parent_workspace_commands_that_fail") table.insert(tests, "two_parent_workspace_pluck") +table.insert(tests, "two_parent_workspace_attrs") -table.insert(tests, "merge_into_workspace_same_rev")