monotone Mtn Change Log

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

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

* (CMD(clone)): (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

* (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_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.

* (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_t, roster_delta_t::apply,
print_roster_delta_t, parse_roster_delta_t): Add nodes_sutured,
(do_delta_for_node_only_in_dest): Add nodes_sutured.
(do_delta_for_node_in_both): Add sutured_nodes_inherited.

* (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.

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

* work.hh (workspace::update_any_attrs): Add roster arg, to allow correct suture
Commit 87fe6d9e2feee56edc43566fc4cfe54fc4f94bb2, by
10 years 9 months Finish existence merge case i test (resolve_duplicate_name_conflict_multiple_parents); passing. Other tests not yet run.

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

* merge.hh:
* (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.

* (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
(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.

* (dump(suture_drop_conflict)): new.
(push_node_id_set): Push node numbers; names are not needed, not
(parse_node_id_set): New.
(parse_suture_drop_conflicts): Finish.
(parse_resolve_conflicts_str): Add resolved_user for file content
(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
10 years 9 months Improve ss-existence-merge.text. Add suture_drop conflicts, start suture_suture_conflicts. Does not compile; commit for backup.

* (resolve_merge_conflicts):
* (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.

* match changes in marking_t birth info.

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

* 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
10 years 9 months start implementing more thorough handling of suture during existence merge phase; not done, just committing for backup.

(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
10 years 10 months Support content/drop conflicts.

* (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.

* (resolve_merge_conflicts): report and resolve content_drop conflicts

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

* (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
10 years 10 months Fix bug; all current tests pass.

* (workspace::update_from_filesystem): Change marking only if
file contents actually change.
Commit 41f8b559d209521fd9ba6b099e5eda9b46fc33d6, by
10 years 10 months Check if internal merger will work later in merge process, to simplify unit testing of roster_merge. Fix some bugs; some tests still failing.

* (three_way_merge): revert previous addition of
(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.

* 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.

* (interactive_merge_and_store): revert previous move of

* (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.

* (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
10 years 11 months 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):
* (stanza::push_symbol): new.

* (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.

* (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.

* (namespace): Move get_file_details to, so it can
also be used by
(resolve_merge_conflicts): Handle content conflicts. Move error
messages here from 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.

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

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

* (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
(parse_resolve_conflicts_opts): add file_content_conflicts. Move error
messages to 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
(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 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/ 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
10 years 11 months Improve 'update' use of full tree merge; only one existing lua test failing (updating_through_a_pivot_root).

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

* (parse_resolve_conflicts_opts): Nice error messages for
unsupported conflict resolutions.
Commit c17d3f3a5ec96fe0e294b8bcffb53bc465530f7b, by
10 years 11 months Better implementation of new update algorithm. However, it does not match user expectations in some cases.

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

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

* work.hh:
* (workspace::get_current_roster): new; returns roster and markings.
Commit 598003d09dcb8002a8fd2d55d56c6d4ac0e243e1, by
10 years 11 months change update algorithm to support suture; breaks some existing tests.

* (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:
* (make_working_markings): new.

* (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
10 years 11 months Fix all unit and lua tests. resolve_duplicate_name_conflict not done yet.

* improve comment on current_revision_format.

* 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.

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

* (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
(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
10 years 11 months Handle merge with sutured node, at least when suture is on the right.

* hybrid_map.hh: add const_reverse_iterator.

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

* parallel_iter.hh: add reverse_iter

* (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.

* (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
(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
10 years 11 months Add birth_cause to marking map, for handling sutures in existence merge. Start supporting sutures in mark_merge_rosters. Not fully working yet.

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

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

* (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.

* (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_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.

* (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.

* (editable_working_tree, simulated_working_tree): add ancestors
to create_file_node, add get_node.
Commit 29d28dc1bf727e21c22368d7be8f7547603a91e1, by
11 years 5 days Always use oldest possible revision_format, so regenerating old revisions preserves the revision id. Revert affected tests.

* (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
11 years 5 days Bump current_revision_format to 2; fix tests that breaks. All except schema_migration and workspace_migration are fixed.

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

Tests fixed by using new revids:

Commit 36e42dfa97c49c00b3cf13944896f335f596e871, by
11 years 5 days Fix test failures due to automate show_conflict format change.

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

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

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

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

* tests/merge_with_conflicting_name_and_renamed_dir/expected.stdout:
Match au show_conflict format change.
Commit fe760bf3fd74449943698f8afd557259eea4f191, by
11 years 5 days propagate from branch 'net.venge.monotone' (head 1992323b917a7e8d0bd4d2266d8e7ba4cb081979)

to branch 'net.venge.monotone.automate_show_conflict' (head 8e31c7bd779710254b1d0425c0e35bc98598d813)
Commit 045b74fe061d4fb0925f7c6b0ca1fd61340bca87, by
11 years 7 days Add suture handling in rosters, changesets. First merge test case passes.

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

* (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.

* (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

* (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/ New file.

* tests/resolve_duplicate_name_conflict/conflicts-resolved: New file.
Commit 8e31c7bd779710254b1d0425c0e35bc98598d813, by
11 years 12 days Initial suture implementation; doesn't succeed.

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

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

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

* (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. ''
currently failing to do diediedie vs suture.
Commit 726aaf7152d47e625f3217a587744bd5622e8590, by
11 years 12 days --resolve-conflicts: add file parsing, some infrastructure for suture resolution; suture not yet implemented.

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

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

* Add comment on expected input structure.

* (resolve_merge_conflicts): Report errors before attempting
(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.

* (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
(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

* tests/resolve_duplicate_name_conflict/__driver__.lua: Put back suture
test; currently failing.
Commit 9e9380d52de6c950651c75e219e3a82529010b59, by
11 years 14 days Partially implement resolution of duplicate names conflict via renames.

* (CMD(merge_into_dir)),
(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,
* (resolve_merge_conflicts): Take opts parameter, handle
resolve_conflicts (just duplicate names for now).
(interactive_merge_and_store): Take opts parameter, pass to

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

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

* tests/resolve_duplicate_name_conflict/__driver__.lua: Comment out 'checkout' test case; only implemented renaming so far.
Commit 647ae8f26c120d3a0175227173fef119424ec832, by
11 years 19 days propagate from branch 'net.venge.monotone' (head 15be8e6d3d9a788a082c6305084d3381e4c40ff7)

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

* (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



Quick Links:    -     Downloads    -     Documentation    -     Wiki    -     Code Forge    -     Build Status