# # # add_file "tests/merge_into_workspace/expected-manifest" # content [c95968057346e2a898b61fc4398386255947902e] # # patch "ChangeLog" # from [f7816b48f2be4aa63e71ee46e11fb97f7bd8aec6] # to [0d87f6808e1eeb2b3b540785515c3ae18d32a09d] # # patch "automate.cc" # from [7c7ee283f75bd7b8042ba94f139395d8edfedecb] # to [3c18e29a2d70546369531bbf9b80aa0faaee507a] # # patch "tests/merge_into_workspace/__driver__.lua" # from [112881333d9a72c586cdd78a064ca20bc79e8c7f] # to [1680cb1faf5f0e35319899e71c47cb28e020219b] # # patch "tests/two_parent_workspace_commands_that_fail/__driver__.lua" # from [d48af1c64a6ef41df1c6ed6cd0e355ee675af624] # to [1a53e327e6673b4539cca9aebba3cc5c25671462] # ============================================================ --- tests/merge_into_workspace/expected-manifest c95968057346e2a898b61fc4398386255947902e +++ tests/merge_into_workspace/expected-manifest c95968057346e2a898b61fc4398386255947902e @@ -0,0 +1,11 @@ +format_version "1" + +dir "" + + file "otherfile" +content [db19801f1850d7d85114e6c3f80d019f5bdb804a] + attr "mtn:execute" "true" + + file "testfile" +content [aed28f362beb27308db048db953a985fba45d8e7] + attr "mtn:execute" "true" ============================================================ --- ChangeLog f7816b48f2be4aa63e71ee46e11fb97f7bd8aec6 +++ ChangeLog 0d87f6808e1eeb2b3b540785515c3ae18d32a09d @@ -1,5 +1,13 @@ 2007-02-07 Zack Weinberg + * 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 + workspace. + * tests/merge_into_workspace: Test new behavior of automate + get_current_revision_id and get_manifest-of. + * tests/two_parent_workspace_commands_that_fail: Un-xfail. + * tests/merge_into_workspace_files_added: Fix for workspace conflicts. 2007-02-07 Matthew Gregan ============================================================ --- automate.cc 7c7ee283f75bd7b8042ba94f139395d8edfedecb +++ automate.cc 3c18e29a2d70546369531bbf9b80aa0faaee507a @@ -713,14 +713,20 @@ AUTOMATE(inventory, "", options::opts::n app.require_workspace(); temp_node_id_source nis; - roster_t base, curr; + roster_t curr, base; + revision_t rev; inventory_map inventory; cset cs; MM(cs); path_set unchanged, changed, missing, unknown, ignored; - app.work.get_base_and_current_roster_shape(base, curr, nis); - make_cset(base, curr, cs); + app.work.get_current_roster_shape(curr, nis); + app.work.get_work_rev(rev); + N(rev.edges.size() == 1, + F("this command can only be used in a single-parent workspace")); + cs = edge_changes(rev.edges.begin()); + app.db.get_roster(edge_old_revision(rev.edges.begin()), base); + // The current roster (curr) has the complete set of registered nodes // conveniently with unchanged sha1 hash values. @@ -949,9 +955,12 @@ AUTOMATE(get_base_revision_id, "", optio app.require_workspace(); - revision_id rid; - app.work.get_revision_id(rid); - output << rid << "\n"; + 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")); + + output << parents.begin()->first << "\n"; } // Name: get_current_revision_id @@ -970,17 +979,18 @@ AUTOMATE(get_current_revision_id, "", op app.require_workspace(); - roster_t old_roster, new_roster; - revision_id old_revision_id, new_revision_id; + parent_map parents; + roster_t new_roster; + revision_id new_revision_id; revision_t rev; 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); app.work.update_current_roster_from_filesystem(new_roster); - app.work.get_revision_id(old_revision_id); - make_revision(old_revision_id, old_roster, new_roster, rev); + app.work.get_parent_rosters(parents); + make_revision(parents, new_roster, rev); calculate_ident(rev, new_revision_id); @@ -1035,15 +1045,14 @@ AUTOMATE(get_manifest_of, N_("[REVID]"), manifest_data dat; manifest_id mid; - roster_t old_roster, new_roster; - temp_node_id_source nis; + roster_t new_roster; if (args.size() == 0) { - revision_id old_revision_id; + 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); app.work.update_current_roster_from_filesystem(new_roster); } else ============================================================ --- tests/merge_into_workspace/__driver__.lua 112881333d9a72c586cdd78a064ca20bc79e8c7f +++ tests/merge_into_workspace/__driver__.lua 1680cb1faf5f0e35319899e71c47cb28e020219b @@ -57,6 +57,13 @@ check(qgrep("patched testfile", "stdout" check(mtn("status"), 0, true, nil) check(qgrep("patched testfile", "stdout")) +-- some automate commands that should do sensible things +check(mtn("automate", "get_current_revision_id"), 0, + "9491240daab3028f583e4d0e0239da3e626fda2b\n", nil) + +check(get("expected-manifest")) +check(mtn("automate", "get_manifest_of"), 0, {"expected-manifest"}, nil) + -- a commit at this point should succeed commit() merged = base_revision() ============================================================ --- tests/two_parent_workspace_commands_that_fail/__driver__.lua d48af1c64a6ef41df1c6ed6cd0e355ee675af624 +++ tests/two_parent_workspace_commands_that_fail/__driver__.lua 1a53e327e6673b4539cca9aebba3cc5c25671462 @@ -41,5 +41,5 @@ check(mtn("update"), 1, nil, diag) check(mtn("revert", "."), 1, nil, diag) check(mtn("update"), 1, nil, diag) +check(mtn("automate", "get_base_revision_id"), 1, nil, diag) +check(mtn("automate", "inventory"), 1, nil, diag) -xfail(mtn("automate", "get_base_revision_id"), 1, nil, diag) -xfail(mtn("automate", "inventory"), 1, nil, diag)