# # # add_dir "tests/two_parent_workspace_add_drop" # # add_file "tests/two_parent_workspace_add_drop/__driver__.lua" # content [5f568bba71acd68d6e1cef71f10e23d413aa1069] # # patch "ChangeLog" # from [f7816b48f2be4aa63e71ee46e11fb97f7bd8aec6] # to [26e733b382037d100bbbe79d04ab178b67032c7d] # # patch "testsuite.lua" # from [c754cb1601a0c6a85f6e21ade08a712b09cd8816] # to [c827541abc86bb966921f29be5a2ff6ad82b0a75] # # patch "work.cc" # from [03ac16e635676bb492d96b77c0fe9058cae43ca1] # to [e0974fb2658ef40ea976da179de4bd0dbe10ba4e] # ============================================================ --- tests/two_parent_workspace_add_drop/__driver__.lua 5f568bba71acd68d6e1cef71f10e23d413aa1069 +++ tests/two_parent_workspace_add_drop/__driver__.lua 5f568bba71acd68d6e1cef71f10e23d413aa1069 @@ -0,0 +1,23 @@ +mtn_setup() + +addfile("foo", "ancestor\nancestor") +commit() +anc = base_revision() + +writefile("foo", "left\nancestor") +commit() +other = base_revision() + +revert_to(anc) +writefile("foo", "ancestor\nright") +commit() + +check(mtn("merge_into_workspace", other), 0, false, false) + +writefile("fudgie", "fudgie content") + +check(mtn("add", "fudgie"), 0, false, true) +check(qgrep("adding fudgie", "stderr")) + +check(mtn("drop", "fudgie"), 0, false, true) +check(qgrep("dropping fudgie", "stderr")) ============================================================ --- ChangeLog f7816b48f2be4aa63e71ee46e11fb97f7bd8aec6 +++ ChangeLog 26e733b382037d100bbbe79d04ab178b67032c7d @@ -1,3 +1,11 @@ +2007-02-07 Matthew Gregan + + * work.cc (workspace::perform_additions, + workspace::perform_deletions): Update to deal with multi-parent + workspaces. + * tests/two_parent_workspace_add_drop: New test. + * testsuite.lua: Add it. + 2007-02-07 Zack Weinberg * tests/merge_into_workspace_files_added: Fix for workspace conflicts. ============================================================ --- testsuite.lua c754cb1601a0c6a85f6e21ade08a712b09cd8816 +++ testsuite.lua c827541abc86bb966921f29be5a2ff6ad82b0a75 @@ -712,3 +712,4 @@ table.insert(tests, "merge_into_workspac table.insert(tests, "two_parent_workspace_commands_that_fail") table.insert(tests, "two_parent_workspace_pluck") table.insert(tests, "merge_into_workspace_same_rev") +table.insert(tests, "two_parent_workspace_add_drop") ============================================================ --- work.cc 03ac16e635676bb492d96b77c0fe9058cae43ca1 +++ work.cc e0974fb2658ef40ea976da179de4bd0dbe10ba4e @@ -1289,10 +1289,9 @@ workspace::perform_additions(path_set co return; temp_node_id_source nis; - roster_t base_roster, new_roster; - MM(base_roster); + roster_t new_roster; MM(new_roster); - get_base_and_current_roster_shape(base_roster, new_roster, nis); + get_current_roster_shape(new_roster, nis); editable_roster_base er(new_roster, nis); @@ -1333,11 +1332,11 @@ workspace::perform_additions(path_set co } } - revision_id base_rev; - get_revision_id(base_rev); + parent_map parents; + get_parent_rosters(parents); revision_t new_work; - make_revision_for_workspace(base_rev, base_roster, new_roster, new_work); + make_revision_for_workspace(parents, new_roster, new_work); put_work_rev(new_work); update_any_attrs(); } @@ -1350,10 +1349,9 @@ workspace::perform_deletions(path_set co return; temp_node_id_source nis; - roster_t base_roster, new_roster; - MM(base_roster); + roster_t new_roster; MM(new_roster); - get_base_and_current_roster_shape(base_roster, new_roster, nis); + get_current_roster_shape(new_roster, nis); // we traverse the the paths backwards, so that we always hit deep paths // before shallow paths (because path_set is lexicographically sorted). @@ -1407,11 +1405,11 @@ workspace::perform_deletions(path_set co } } - revision_id base_rev; - get_revision_id(base_rev); + parent_map parents; + get_parent_rosters(parents); revision_t new_work; - make_revision_for_workspace(base_rev, base_roster, new_roster, new_work); + make_revision_for_workspace(parents, new_roster, new_work); put_work_rev(new_work); update_any_attrs(); }