monotone

monotone Mtn Change Log

Age Message
10 years 10 months propagate from branch 'net.venge.monotone' (head 2a8a527267594845ef05344f96f2873aa40c970f)

to branch 'net.venge.monotone.automate_show_conflict' (head 87fe6d9e2feee56edc43566fc4cfe54fc4f94bb2)
Commit fc349607d18f384b4b4d424b34d60bc99f417dbe, by stephen_leake-2@stephe-leake.org
10 years 10 months More improvement of suture ancestor handling. All tests pass. more work to be done.

* cmd_netsync.cc (CMD(clone)): cmd_merging.cc (CMD(update)): pass
* merged_roster to update_any_attr, for speed optimization and suture
* check
(CMD(get_roster)): pass revision id to write_roster_and_marking for
check_sane_against.

* cset.cc (cset::apply_to): add sutured_nodes_inherited; clear ancestors.
(print_cset, parse_cset): add sutured_nodes_inherited

* cset.hh (struct editable_tree): add clear_ancestors operation.
(struct cset): add sutured_nodes_inherited

* database.cc (database_impl::get_roster_base): pass revision id to
read_roster_and_marking for check_sane_against.
(database_impl::write_delayed_roster): pass revision id to
write_roster_and_marking for check_sane_against.
(database::get_roster_version): pass revision id to check_sane_against.


* database_format.text: New file.

* roster.cc (node::node, file_node::file_node): add ancestors argument.
(file_node::clone): copy ancestors
(roster_t::check_sane_against): add rev_id argument for checking birth
revision for sutured nodes. Handle empty markings. Check ancestors for
sutured nodes.
(union_new_nodes): handle suture ancestors correctly.
(mark_merge_node): Add comments on sutures. Set parents correctly for
new suture.
(delta_in_both (cset)): add sutured_nodes_inherited
(roster_t::print_to): print ancestor node ids in local part.
(roster_t::parse_from): Read ancestor node ids.
(UNIT_TESTS): add revision id arugments to match changes.

* roster.hh (struct node): add ancestors argument in constructor. Clean
up documentation of suture ancestors.
(struct file_node): add ancestors argument in constructor.
(roster_t::check_sane_against, read_roster_and_marking,
write_roster_and_marking): add rev_id argument.


* roster_delta.cc (roster_delta_t, roster_delta_t::apply,
print_roster_delta_t, parse_roster_delta_t): Add nodes_sutured,
sutured_nodes_inherited.
(do_delta_for_node_only_in_dest): Add nodes_sutured.
(do_delta_for_node_in_both): Add sutured_nodes_inherited.

* roster_merge.cc (roster_merge_result::report_suture_drop_conflicts):
Can't print names of dropped nodes; not accessible.
(parse_resolve_conflicts_str): Doc that we don't detect all
inappropriate resolutions here.
(merge_scalar): Output winning side.
(insert_sutured): Improve already_handled.
(assign_name): Add parent_nid argument to handle suture name conflicts.
(roster_merge): set suture ancestors properly. Don't check
already_handled empty; not working.
(UNIT_TESTS): match changes.

* tests/update_with_pending_modification/__driver__.lua:
* tests/merge((patch_a),_(drop_a,_add_a))/__driver__.lua (base):
* tests/merge((patch_a),_(drop_a))/__driver__.lua (left):
* tests/merge((drop_a),_(rename_a_b,_patch_b))/__driver__.lua (base):
* tests/(imp)_merge((patch_foo_a),_(delete_foo_))/__driver__.lua (base):
Now generates conflicts instead of demonstrating die-die-die.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Don't mess up the
workspace for update. Use samefilestd.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_1-beth_1:
* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_2-jim_1:
* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_2-jim_1-conflicts:
* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_3-beth_3:
* tests/resolve_duplicate_name_conflict/expected-merge-messages-jim_1-beth_2:
* tests/resolve_duplicate_name_conflict/expected-update-messages-beth_3:
* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_1-beth_1:
match code changes.

* tests/resolve_duplicate_name_conflict_drop_vs_suture/__driver__.lua:
Clean up comments. Add FIXME for internal line merger. Add FIXME for
test not done.

* tests/resolve_duplicate_name_conflict_drop_vs_suture/merge_e_f-message-1:
* tests/resolve_duplicate_name_conflict_drop_vs_suture/merge_g_d-message-1:
* tests/resolve_duplicate_name_conflict_drop_vs_suture/update-message-1:
match code changes.

* tests/resolve_duplicate_name_conflict_multiple_parents/__driver__.lua:
Add FIXME for internal line merger.

* work.cc (editable_working_tree::get_node): return the_null_node,
document why.
(workspace::update_any_attrs): Add roster arg, to allow correct suture
ancestors.

* work.hh (workspace::update_any_attrs): Add roster arg, to allow correct suture
ancestors.
Commit 87fe6d9e2feee56edc43566fc4cfe54fc4f94bb2, by stephen_leake-2@stephe-leake.org
10 years 11 months Finish existence merge case i test (resolve_duplicate_name_conflict_multiple_parents); passing. Other tests not yet run.

* cmd_merging.cc: Add temp node id source as required by
resolve_merge_conflicts. Add left_rid, right_rid arguments to
mark_merge_roster.

* merge.hh:
* merge.cc (resolve_merge_conflicts): Pass in temp_node_id_source, don't
declare locally in resolve_duplicate_name_conflicts.
(interactive_merge_and_store): Declare temp_node_id_source as needed by
roster_merge, resolve_merge_conflicts.

* roster.cc (syms): Alphabetize. Add birth_parent.
(dump(std::map<node_id, revision_id>)): new.
(temp_node): Make public.
(mark_new_node): Add left_rid, right_rid arguments, for birth record.
(mark_merged_node): Add left_rid, right_rid arguments, record recursive
suture parents in birth record.
(mark_merge_roster): Add left_rid, right_rid arguments, for birth
records.
(push_marking, parse_marking): Put each parent on a separate line, for
simpler parsing.

* roster.hh (struct marking_t): Change birth record to store parent birth
revision as well.

* roster_merge.cc (dump(suture_drop_conflict)): new.
(push_node_id_set): Push node numbers; names are not needed, not
available.
(parse_node_id_set): New.
(parse_suture_drop_conflicts): Finish.
(parse_resolve_conflicts_str): Add resolved_user for file content
conflicts.
(find_common_ancestor_nodes): Use parent birth revisions stored in
marking map birth record.
(check_scalars_modified): New.
(insert_sutured): Finish case i.
(roster_merge): Handle automatic sutures from existence step.

* roster_merge.hh (struct suture_scalar_conflict): New.

* ss-existence-merge.text: Improve examples, describe storing birth
revisions in birth record.

* tests/resolve_duplicate_name_conflict_multiple_parents: New file.

* tests/resolve_duplicate_name_conflict_multiple_parents/__driver__.lua: New file.
Commit 0792c2168ee9402e1494ddd499a5cd1e38365069, by stephen_leake-2@stephe-leake.org
10 years 11 months Improve ss-existence-merge.text. Add suture_drop conflicts, start suture_suture_conflicts. Does not compile; commit for backup.

* merge.cc (resolve_merge_conflicts):
* cmd_merging.cc (show_conflicts_core): add suture_drop_conflicts.

* roster.hh (struct marking_t): Add type birth_record_t, rename
birth_cause to birth_record; handle suture parents that are sutured.

* roster.cc: match changes in marking_t birth info.

* roster_merge.cc: Match rewritten ss-existence-merge.text; not done. Add
suture_drop conflicts.
(roster_merge_result::resolve_duplicate_name_conflicts): Use external
node_id_source.

* roster_merge.hh: Add list of places to add support for new conflicts.
Finish suture_drop_conflict. Start suture_suture_conflict.
(roster_merge): Add temp node id source.

* ss-existence-merge.text: Add sutured parents of sutures. Rewrite
processing description.
Commit 53c414155805d1e6a66bea6a0686415013a4936a, by stephen_leake-2@stephe-leake.org
10 years 11 months start implementing more thorough handling of suture during existence merge phase; not done, just committing for backup.

* roster_merge.cc:
(insert_if_unborn_or_sutured): Change already_handled to contain pairs.
Code outline of algorithm.

* roster_merge.hh: add suture_drop_conflict type.

* ss-existence-merge.text: rewrite.
Commit 805e663619ced91f301f1e2214f1efa3e6196a6b, by stephen_leake-2@stephe-leake.org
11 years 12 days Support content/drop conflicts.

* cmd_merging.cc (find_heads_to_merge): handle heads.size == 2 here.
(CMD merge): only do first merge if conflict resolutions specified.
(show_conflicts_core): report content_drop conflicts.
(CMD_AUTOMATE show_conflicts): heads.size == 2 handled in find_heads_to_merge.

* merge.cc (resolve_merge_conflicts): report and resolve content_drop conflicts

* monotone.texi (Merge Conflicts): doc that merge only does first merge
when conflict resolutions given.

* roster_merge.cc (dump duplicate_name_conflict): dump resolution.
(dump content_drop_conflict): new.
(namespace syms): add content_drop conflict symbols.
(roster_merge_result::report_content_drop_conflicts): new.
(parse_content_drop_conflicts): new.
(parse_resolve_conflicts_str): parse content_drop resolutions.
(roster_merge_result::resolve_duplicate_name_conflicts): error if no
resolution given.
(roster_merge_result::resolve_content_drop_conflicts): new.
(insert_if_unborn_or_sutured): detect content_drop conflict.
(side_t): move to header in resolve_conflicts namespace.

* roster_merge.hh (resolve_conflicts): Add content_drop resolutions. Move
side_t here.
(struct content_drop_conflict): new.
(dump content_drop_conflict): new.
(struct roster_merge_result): add content_drop_conflicts.

* ss-existence-merge.text: Document content_drop_conflicts.

* testlib.lua: clean up trailing whitespace. Add samefilestd.

* tests/resolve_duplicate_name_conflict_drop_vs_suture: New test.
Commit 0e1b9d7942c906a1e796aa38dadf06a93fb7e5f1, by stephen_leake-2@stephe-leake.org
11 years 20 days Fix bug; all current tests pass.

* work.cc (workspace::update_from_filesystem): Change marking only if
file contents actually change.
Commit 41f8b559d209521fd9ba6b099e5eda9b46fc33d6, by stephen_leake-2@stephe-leake.org
11 years 22 days Check if internal merger will work later in merge process, to simplify unit testing of roster_merge. Fix some bugs; some tests still failing.

* cmd_merging.cc (three_way_merge): revert previous addition of
content_merge_adaptor.
(CMD update, CMD merge_into_dir, CMD merge_into_workspace, CMD pluck):
revert previous move of content_merge_workspace_adaptor.
(show_conflicts_core): add lua for checking internal merger; move check
to report_file_content_conflicts.

* diff_patch.cc: Revert previous addition of lua to try_user_merge; lua
is back in content_merger.

* diff_patch.hh (struct content_merger): revert previous deletiong of lua
from content_merger.

* merge.cc (interactive_merge_and_store): revert previous move of
content_merge_database_adaptor.

* roster_merge.cc (roster_merge_result::report_file_content_conflicts):
move check of internal merger here.
(merge_nodes): revert addition of arguments needed for internal merger check.

* roster_merge.hh (roster_merge_result::report_file_conflicts): Add lua,
make non-const for internal merger check.

* tests/automate_show_conflicts/expected-content-attached.stdout: Add
'resolved_internal' as appropriate.

* work.cc (workspace::get_current_roster): update markings as well as roster.
(workspace::update_from_filesystem): new

* work.hh (workspace::update_from_filesystem): new
Commit 938e10f5db05519407c04434084d78ea9b565d60, by stephen_leake-2@stephe-leake.org
11 years 27 days Add content conflict resolutions, support additional merge and update suture cases. resolve_duplicate_name_conflict test is now complete and passes.

* basic_io.hh (stanza::push_symbol):
* basic_io.cc (stanza::push_symbol): new.

* cmd_merging.cc (three_way_merge): Add content_merge_adaptor for testing
whether internal merger will succeed for content conflicts.
(CMD update, CMD merge_into_dir, CMD merge_into_workspace, CMD pluck): pass
content_merge_adaptor to three_way_merge.
(show_conflicts_core): pass content_merge_adaptor to roster_merge.

* diff_patch.cc (content_merger::attempt_auto_merge): factor out
attempt_auto_merge from try_auto_merge.
(content_merger::try_user_merge): Move lua parameter here from
constructor; simplifies using attempt_auto_merge.

* diff_patch.hh (struct content_merger): Move lua hook from struct to
try_user_merge param. Add attempt_auto_merge.

* merge.cc (namespace): Move get_file_details to roster.cc, so it can
also be used by roster_merge.cc.
(resolve_merge_conflicts): Handle content conflicts. Move error
messages here from roster_merge.cc parse_resolve_conflicts_opts.
(interactive_merge_and_store): pass content_merge_adaptor to
roster_merge for testing whether internal merger will succeed for
content conflicts.

* monotone.texi (Merge Conflicts): Start documenting conflict resolution.
(Automation show_conflicts): Output 'resolved_internal' for file
content conflicts if internal line merger will succeed.

* options_list.hh (resolve_conflicts_file): Fix documentation string.

* roster.cc (mark_merged_node): Handle birth_revision for a previously
sutured node.
(roster_t::get_file_details): Move here from merge.cc.

* roster.hh (class roster_t get_file_details): Move here from merge.cc.

* roster_merge.cc (syms): Add resolved_internal, resolved_user for
content resolution.
(put_attr_conflict): Delete FIXMEs
(put_content_conflict): Output conflict resolution if not 'none'.
(resolve_conflicts::do_auto_merge): new; implement resolved_internal.
(parse_duplicate_name_conflicts): Improve error message.
(parse_file_content_conflicts): New; implement content conflict
resolutions
(parse_resolve_conflicts_opts): add file_content_conflicts. Move error
messages to roster_merge.cc resolve_merge_conflicts.
(roster_merge_result::resolve_file_content_conflicts): New.
(auto_merge_succeeds): New for testing whether internal merger will succeed.
(merge_nodes, roster_merge): Add parameters required by auto_merge_succeeds

* roster_merge.hh (resolve_conflicts::resolution_t): Add content conflict
resolution.
(struct file_content_conflict): Add resolution.
(struct roster_merge_result::resolve_file_content_conflicts): new.
(roster_merge): Add parameters required by auto_merge_succeeds.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Verify contents
of checkout.sh at each step. Construct file contents so internal line
merger succeeds at one merge. Implement entire test case; now passes.

* tests/resolve_duplicate_name_conflict/checkout.sh-merged: no longer needed.

* tests/resolve_duplicate_name_conflict/expected-update-messages-jim_1:
* tests/resolve_duplicate_name_conflict/expected-merged-revision-jim_1:
* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_2-jim_1-conflicts:
* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_1-beth_1:
Match file content changes.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_2-jim_1:
real messages.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_3-beth_3: New file.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-jim_1-beth_2: New file.

* tests/resolve_duplicate_name_conflict/expected-update-messages-beth_3: New file.

* tests/resolve_duplicate_name_conflict/expected-update-messages-jim_2: New file.

* tests/resolve_duplicate_name_conflict/merge-abe_2-jim_1-resolve_conflicts:
change resolution name.

* tests/resolve_duplicate_name_conflict/merge-beth_2-jim_1-conflicts: New file.
Commit 365319fc94f5191f924d45536e0f265a4652d525, by stephen_leake-2@stephe-leake.org
11 years 1 month Improve 'update' use of full tree merge; only one existing lua test failing (updating_through_a_pivot_root).

* cmd_merging.cc (CMD update): only use full tree merge if no explicit
rev given on cmd line.

* roster_merge.cc (parse_resolve_conflicts_opts): Nice error messages for
unsupported conflict resolutions.
Commit c17d3f3a5ec96fe0e294b8bcffb53bc465530f7b, by stephen_leake-2@stephe-leake.org
11 years 1 month Better implementation of new update algorithm. However, it does not match user expectations in some cases.

* cmd_merging.cc (CMD update): Better implementation of new update
algorithm, using new work.get_current_roster.

* roster.hh:
* roster.cc: Delete make_working_markings; use new
work.get_current_roster instead.

* work.hh:
* work.cc (workspace::get_current_roster): new; returns roster and markings.
Commit 598003d09dcb8002a8fd2d55d56c6d4ac0e243e1, by stephen_leake-2@stephe-leake.org
11 years 1 month change update algorithm to support suture; breaks some existing tests.

* cmd_merging.cc (CMD(update)): change algorithm when not switching
branches; allows supporting suture.

* unique-mark-merge.text: New file.
* multi-mark-merge.text: New file.
* ss-existence-merge.text: New file.
* ss-mark-merge.text: New file.

* roster.hh:
* roster.cc (make_working_markings): new.

* roster_merge.cc (roster_merge): fix bug.

* tests/resolve_duplicate_name_conflict/expected-update-messages-jim_1:
* tests/resolve_duplicate_name_conflict/__driver__.lua (abe_thermostat):
Resolve FIXME.
Commit 9dcf74595a12048481267b897683438c7fa16f4e, by stephen_leake-2@stephe-leake.org
11 years 1 month Fix all unit and lua tests. resolve_duplicate_name_conflict not done yet.

* revision.cc: improve comment on current_revision_format.

* roster.cc: change 'current_marking_map_format' to
'current_roster_format', use oldest possible.
(roster_t::required_roster_format): new.
(roster_current_roster_format): new
(shallow_equal): Add 'compare_ancestors' parameter.
(push_marking): Add 'marking_format' parameter.
(roster_t::print_to): Determine marking (roster) format to use.
(roster_t::parse_from): More helpful error message on invalid format.

* roster.hh(shallow_equal): Add 'compare_ancestors' parameter.
(struct marking_t): delete 'invalid' from birth_cause_t; not needed.
constructor default to 'add'.
(class roster_t): add 'required_roster_format'.
(roster_current_roster_format): new for roster_delta.

* roster_delta.cc: Clean up trailing whitespace.
(roster_delta_t::apply): create nodes with null ancestors.
(print_roster_delta_t): use roster_current_roster_format.

* roster_merge.cc (base_scalar::make_dir): create with null ancestors
(base_scalar::make_file): create with null ancestors
(file_scalar::check_result): check left, right, result in
file_content_conflict
(UNIT_TEST roster_merge, node_lifecycle): pass False to shallow_equal compare_ancestors.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_1-beth_1 (mtn): revids changed back.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_2-jim_1-conflicts: New file.

* tests/resolve_duplicate_name_conflict/merge-abe_2-jim_1-resolve_conflicts: New file.
Commit dd1db0c69651cc5c574371c159e8559bd81c8ca5, by stephen_leake-2@stephe-leake.org
11 years 1 month Handle merge with sutured node, at least when suture is on the right.

* hybrid_map.hh: add const_reverse_iterator.

* merge.cc (try_to_merge_files): use conflict.get_ancestor_roster, to
support sutures in conflicts.

* parallel_iter.hh: add reverse_iter

* roster.cc (dump(birth_cause)): cleanup formatting of output.
(shallow_equal): check ancestors.
(mark_new_node): set birth_cause correctly for suture.
(mark_merge_roster): Implement suture for 'exists_in_left && !exists_in_right'
(parse_marking): do suture, split properly.

* roster_merge.cc (dump(file_content_conflict)): replace nid with
left_nid, right_nid, result_nid for suture.
(put_content_conflict): simplify, use conflict.get_ancestor_roster to
handle suture.
(file_content_conflict::get_ancestor_roster): new.
(roster_merge_result::report_file_content_conflicts): handle conflict
with sutured node.
(insert_if_unborn_or_sutured): handle merging with a sutured node
properly.
(roster_merge): handle merging with a sutured node properly; use
reverse_iter to optimize.

* roster_merge.hh (struct file_content_conflict): replace nid with
left_nid, right_nid, result_nid for suture. Add get_ancestor_roster.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Doc conflicts on
merging abe_2 with jim_1.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_1-beth_1 (mtn): Match rev id changes.
Commit 42a07ab393a277cedd3dfb69238d08e57753e922, by stephen_leake-2@stephe-leake.org
11 years 1 month Add birth_cause to marking map, for handling sutures in existence merge. Start supporting sutures in mark_merge_rosters. Not fully working yet.

* basic_io.cc (stanza::push_str_multi (symbol, symbol, vector<str>)): new.

* basic_io.hh (syms): move symbols used only by rosters to roster.cc

* cset.cc (cset::apply_to): set ancestors in sutured nodes.

* cset.hh (struct editable_tree): set ancestors in sutured nodes;
requires new get_node virtual function. improve comments.

* rev_types.hh: move declarations of the_null_node, null_ancestors here
so they are visible wherever node_id is.

* roster.cc (syms): move symbols used only by rosters here from basic_io.hh.
(dump (birth_cause)): new.
(dump (marking)): add birth_cause.
(roster_t::check_sane_against): check birth_cause.
(editable_roster_base::create_file_node,
editable_roster_for_merge::create_file_node,
editable_roster_for_nonmerge::create_file_node): add ancestors.
(editable_roster_base::get_node): new.
(union_new_nodes): union suture ancestors.
(mark_new_node, mark_unmerged_node, mark_merged_node): set birth_cause.
(mark_merge_roster): handle some suture cases (need more).
(push_marking): output birth_cause.
(parse_marking): parse birth_cause
(roster_t::print_to, roster_t::parse_from): bump roster format version.

* roster.hh: move declarations of the_null_node, null_ancestors to rev_types.hh.
(struct marking_t): add birth_cause.
(editable_roster_base::create_file_node): add ancestors.
(editable_roster_base::get_node): new.

* roster_merge.cc (create_node_for(n, ancestors, roster)): new.
(insert_if_unborn_or_sutured): renamed from insert_if_unborn, handle suture.
(merge_nodes): factor out from roster_merge parallel case.
(roster_merge): Support sutures in existence merge and scalar merge.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Extend to next
generation of merges; not yet passing.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_1-beth_1:
New file.

* tests/resolve_duplicate_name_conflict/expected-merge-messages-abe_2-jim_1:
New file.

* tests/resolve_duplicate_name_conflict/expected-merged-revision-jim_1:
New file.

* tests/resolve_duplicate_name_conflict/expected-update-messages-jim_1:
New file.

* work.cc (editable_working_tree, simulated_working_tree): add ancestors
to create_file_node, add get_node.
Commit 29d28dc1bf727e21c22368d7be8f7547603a91e1, by stephen_leake-2@stephe-leake.org
11 years 2 months Always use oldest possible revision_format, so regenerating old revisions preserves the revision id. Revert affected tests.

* revision.cc (revision_t::required_revision_format): New function.
(print_insane_revision): Use it.

* revision.hh (revision_t): Declare it.

* testlib.lua (post_cmd): Add comment on why we can't do 'canonicalize'
in this function.
Commit 403c68d6c067b60b1fdda3c503a0f31156a57d8a, by stephen_leake-2@stephe-leake.org
11 years 2 months Bump current_revision_format to 2; fix tests that breaks. All except schema_migration and workspace_migration are fixed.

* revision.cc: Bump current_revision_format to 2; see what tests that breaks.

Tests fixed by using new revids:

automate_get_content_changed
automate_get_revision
automate_inventory_options
automate_put_revision
automate_show_conflicts
db_rosterify_preserves_renames
diff_against_empty_file
diff_on_missing_trailing_newline_at_end_of_file
exchanging_work_via_netsync,_with_notes
importing_cvs_tricky_repo_with_tags
merge_into_workspace
merge_into_workspace_attr_corpse
merge_into_workspace_files_added
merge_multiple_heads_1
merge_update_part_of_file
merge_with_conflicting_name_and_renamed_dir
rosterify_on_a_db_with_an_empty_manifest
Commit 36e42dfa97c49c00b3cf13944896f335f596e871, by stephen_leake-2@stephe-leake.org
11 years 2 months Fix test failures due to automate show_conflict format change.

* revision.cc: New constant current_revision_format; leave at 1 to
distinguish test failures due to bumping it to 2 from other test
failures.
(print_insane_revision): Use it.
(parse_revision): Use it.

* roster.hh (struct node): Fix comment to allow future user suture
command.

* monotone.texi: Update automate show_conflict documentation to current format.

* tests/automate_show_conflicts/expected-*: Match au show_conflict format
change.

* tests/merge_with_conflicting_name_and_renamed_dir/expected.stdout:
Match au show_conflict format change.
Commit fe760bf3fd74449943698f8afd557259eea4f191, by stephen_leake-2@stephe-leake.org
11 years 2 months propagate from branch 'net.venge.monotone' (head 1992323b917a7e8d0bd4d2266d8e7ba4cb081979)

to branch 'net.venge.monotone.automate_show_conflict' (head 8e31c7bd779710254b1d0425c0e35bc98598d813)
Commit 045b74fe061d4fb0925f7c6b0ca1fd61340bca87, by stephen_leake-2@stephe-leake.org
11 years 2 months Add suture handling in rosters, changesets. First merge test case passes.

* cset.hh (struct cset): Add nodes_sutured.

* cset.cc (cset::empty): check nodes_sutured.
(cset::clear): Clear nodes_sutured.
(cset::apply_to): Handle nodes_sutured.
(print_cset): Output nodes_sutured.
(parse_cset): Input nodes_sutured.

* roster.cc (dump node_t): Output ancestors
(roster_t::create_dir_node): Handle ancestors
(roster_t::create_file_node): Handle ancestors
(delta_only_in_from): Comment about handling sutures.
(delta_only_in_to): Handle sutures.
(select_nodes_modified_by_cset): Handle sutures.

* roster.hh (struct node): Add ancestors
(class roster_t): Handle ancestors in create_dir_node,
create_file_node. Clean up comment about old_locations vs deleting
nodes.

* roster_merge.cc (parse_resolve_conflicts_str): More error checking. Get
sutured file name. Handle basic_io parser properly.
(roster_merge_result::resolve_duplicate_name_conflicts): Don't allow
suturing directories.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Now passes.

* tests/resolve_duplicate_name_conflict/checkout.sh-merged: New file.

* tests/resolve_duplicate_name_conflict/conflicts-resolved: New file.
Commit 8e31c7bd779710254b1d0425c0e35bc98598d813, by stephen_leake-2@stephe-leake.org
11 years 2 months Initial suture implementation; doesn't succeed.

* merge.cc (store_roster_merge_result): Allow temporary node ids in
check_sane; resolve_merge_conflicts can now add nodes.

* roster.cc (roster_t::drop_detached_node): Allow dropping nodes that
have never been attached.

* roster.hh: Update comments on deleting never-attached nodes.

* roster_merge.cc (attach_node): Renamed from set_new_name_in_roster.
(roster_merge_result::resolve_duplicate_name_conflicts): Implement
suture, clean up comments.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Clean up
workspace before update. Check all file content. 'checkout.sh'
currently failing to do diediedie vs suture.
Commit 726aaf7152d47e625f3217a587744bd5622e8590, by stephen_leake-2@stephe-leake.org
11 years 2 months --resolve-conflicts: add file parsing, some infrastructure for suture resolution; suture not yet implemented.

* basic_io.hh,
* basic_io.cc (stanza::push_str_pair(symbol, symbol): new function.

* cmd_merging.cc: Add resolve_conflicts_opts to appropriate commands,
comments to others.
(CMD(merge_into_dir)): Call parse_resolve_conflicts_opts.

* luaext_parse_basic_io.cc: Add comment on expected input structure.

* merge.cc (resolve_merge_conflicts): Report errors before attempting
resolutions.
(interactive_merge_and_store): Call parse_resolve_conflicts_opts.

* options_list.hh (resolve_conflicts_opts): Fix spelling. Change
resolve_conflicts_file to take a file name argument. Add check that
only one resolve_conflicts argument is given.

* roster_merge.cc (namespace syms): Add more symbols for parsing and
generating conflicts file.
(put_*_conflict): use push_file_pair.
(roster_merge_result::report_*_conflicts): Use new symbols for conflict
labels.
(parse_duplicate_name_conflicts): New function.
(parse_resolve_conflicts_str): New function.
(parse_resolve_conflicts_opts): New function.
(roster_merge_result::resolve_duplicate_name_conflicts): Remove opts
argument. Improve loop. Factor out parsing resolutions. suturing not
supported yet.

* roster_merge.hh: Support conflict resolutions for duplicate_name_conflict.

* tests/common/test_utils_inventory.lua (check_basic_io_line): Allow nil
value.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Put back suture
test; currently failing.
Commit 9e9380d52de6c950651c75e219e3a82529010b59, by stephen_leake-2@stephe-leake.org
11 years 2 months Partially implement resolution of duplicate names conflict via renames.

* cmd_merging.cc (CMD(merge_into_dir)),
(CMD(update)),
(CMD(merge_into_workspace)),
(CMD(pluck)): Pass app.opts to resolve_merge_conflicts.
(merge_two): Pass opts to interactive_merge_and_store.
(CMD(merge)): Accept resolve_conflict_opts.

note: other commands (probably all) should also accept
resolve_conflict_opts - later.

* merge.hh,
* merge.cc (resolve_merge_conflicts): Take opts parameter, handle
resolve_conflicts (just duplicate names for now).
(interactive_merge_and_store): Take opts parameter, pass to
resolve_merge_conflicts.

* options_list.hh (OPTSET(resolve_conflict_opts)): New.

* roster_merge.hh (struct roster_merge_result),
* roster_merge.cc: Add
roster_merge_result::resolve_duplicate_name_conflicts and associated
stuff.

* tests/resolve_duplicate_name_conflict/__driver__.lua: Comment out 'checkout' test case; only implemented renaming so far.
Commit 647ae8f26c120d3a0175227173fef119424ec832, by stephen_leake-2@stephe-leake.org
11 years 2 months propagate from branch 'net.venge.monotone' (head 15be8e6d3d9a788a082c6305084d3381e4c40ff7)

to branch 'net.venge.monotone.automate_show_conflict' (head c4c9fd954ede200a16696ffe5811756445041c05)
Commit 6f166933d80a5d0dc86afb3d9c7e307d775ee21d, by stephen_leake-2@stephe-leake.org
11 years 2 months automate stdio now re-reads the workspace options for each command. Add tests for some commands that depend on that.

* cmd_automate.cc (CMD_AUTOMATE stdio): Reread the workspace options for
each command.

* monotone.texi (Automation show_conflicts): Doc --branch option.

* tests/automate_cert/__driver__.lua: Test that 'cert' gets the keydir from
workspace options when run via stdio.

* tests/automate_get_options/__driver__.lua: New test.

* tests/automate_heads/__driver__.lua: Test that 'heads' gets the branch from
workspace options when run via stdio.

* tests/automate_keys/__driver__.lua: Improve to be more realistic (don't
delete _MTN/options). Test that 'keys' gets the keydir from workspace
options when run via stdio.
Commit c4c9fd954ede200a16696ffe5811756445041c05, by stephen_leake-2@stephe-leake.org

Branches

Tags

Quick Links:     www.monotone.ca    -     Downloads    -     Documentation    -     Wiki    -     Code Forge    -     Build Status