Checkout Tools
  • last updated 1 hour ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Revert r1667280.

As Bert pointed out historical behaviour and the svnbook disagree with the

change. We'll need some other way to fix the 'mine-full' binary file problem.

Discussion:

http://mail-archives.apache.org/mod_mbox/subversion-dev/201503.mbox/%3C01fd01d060f6%24f0d1ffa0%24d275fee0%24%40qqmail.nl%3E

  1. … 1 more file in changeset.
Always install a .mine file for conflicted binary files, not just in

case the binary file was detranslated.

This makes the 'mine-full' option work again from the conflict prompt.

Before this change, an assertion in libsvn_wc failed when the 'mine-full'

option was used since no path for 'mine' was recorded in conflict storage.

* subversion/libsvn_wc/merge.c

(merge_binary_file): Always create .mine, if necessary as a copy

of the conflicted working file. Update docstring.

* subversion/tests/cmdline/merge_tests.py

(dry_run_merge_conflicting_binary): Update on-disk test expectations.

  1. … 1 more file in changeset.
Avoid a db operation for each property conflict in some invocations of

the interactive conflict resolver.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Add kind argument.

(svn_wc__conflict_invoke_resolver): Update caller. Add argument.

* subversion/libsvn_wc/conflicts.h

(svn_wc__conflict_invoke_resolver): Add kind argument.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Extend scope of variable. Update caller.

* subversion/libsvn_wc/props.c

(svn_wc_merge_props3): Update caller.

* subversion/libsvn_wc/update_editor.c

(delete_entry,

close_directory,

absent_node,

close_file): Update caller.

  1. … 4 more files in changeset.
Remove a few ';;' instances from our code.

No functional changes.

* subversion/libsvn_client/deprecated.c

(svn_client_uuid_from_url):

* subversion/libsvn_client/mergeinfo.c

(svn_client__mergeinfo_log):

* subversion/libsvn_subr/stream.c

(create_tempfile):

* subversion/libsvn_wc/conflicts.c

(svn_wc__read_conflicts):

* subversion/libsvn_wc/merge.c

(detranslate_wc_file):

* subversion/svnmucc/svnmucc.c

(execute): Remove duplicated ';'.

  1. … 5 more files in changeset.
Add svn_diff_file_output_merge3() with cancel support and update callers.

* subversion/include/svn_diff.h

(svn_diff_file_output_merge3): New function.

(svn_diff_file_output_merge2): Deprecate.

* subversion/libsvn_diff/diff_file.c

(svn_diff_file_output_merge2): Replace with ...

(svn_diff_file_output_merge3): that adds cancel support.

* subversion/libsvn_diff/deprecated.c

(svn_diff_file_output_merge2): New implementation that just uses

svn_diff_file_output_merge3().

* subversion/libsvn_wc/conflicts.h

(svn_wc__mark_resolved_text_conflict): Add cancel support.

* subversion/libsvn_wc/conflicts.c

(merge_showing_conflicts, eval_text_conflict_func_result,

resolve_text_conflict, svn_wc__mark_resolved_text_conflict):

Add cancel support.

(svn_wc__conflict_invoke_resolver): Pass cancel arguments to

resolve_text_conflict() and svn_wc__mark_resolved_text_conflict()

(resolve_text_conflict_on_node): Pass cancel arguments to

merge_showing_conflicts.

* subversion/libsvn_wc/merge.c

(do_text_merge): Add cancel support.

(merge_text_file): Update caller.

* subversion/libsvn_wc/adm_crawler.c

(restore_file): Update call to svn_wc__mark_resolved_text_conflict().

Did not add cancel support here.

* subversion/svn/conflict-callbacks.c

(show_conflicts, merge_prop_conflict, show_prop_conflict,

edit_prop_conflict): Add cancel support.

(handle_text_conflict): Update call to show_conflicts().

(handle_prop_conflict): Update call to show_prop_conflict().

* subversion/tests/libsvn_diff/diff-diff3-test.c

(three_way_merge): Switch to svn_diff_file_output_merge3().

* tools/diff/diff3.c

(do_diff3): Switch to svn_diff_file_output_merge3().

* tools/diff/diff4.c

(do_diff4): Switch to svn_diff_file_output_merge3().

  1. … 10 more files in changeset.
Switch to three-way text-conflict markers for merge and update.

* subversion/libsvn_wc/merge.c

(do_text_merge): Choose three-way text-conflict marker.

* subversion/bindings/swig/ruby/test/test_client.rb

(test_resolve_merged): Expect new output.

* subversion/tests/cmdline/basic_tests.py

(basic_conflict, automatic_conflict_resolution): Expect new output.

* subversion/tests/cmdline/checkout_tests.py

(co_with_obstructing_local_adds): Expect new output.

* subversion/tests/cmdline/merge_tests.py

(textual_merges_galore): Pass extra revision.

(merge_conflict_markers_matching_eol,

merge_automatic_conflict_resolution,

conflict_naming): Expect new output.

* subversion/tests/cmdline/trans_tests.py

(update_modified_with_translation): Expect new output.

* subversion/tests/cmdline/update_tests.py

(update_to_resolve_text_conflicts, conflict_markers_matching_eol,

update_with_obstructing_additions, update_conflicted,

update_accept_conflicts): Expect new output.

* subversion/tests/cmdline/svntest/actions.py

(inject_conflict_into_expected_state,

inject_conflict_into_expected_state): Add revision parameter.

(make_conflict_marker_text): Generate three-way marker.

  1. … 7 more files in changeset.
Make the few remaining places that prepare files for installing use

svn_wc__db_pristine_prepare_install() to allow further refactoring the

pristine install work.

* subversion/libsvn_wc/merge.c

(merge_file_trivial): Use the same api to obtain a tempdir as the rest

of the merge code.

* subversion/libsvn_wc/wc_db.h

(svn_wc__db_pristine_get_tempdir): Remove function.

* subversion/libsvn_wc/wc_db_pristine.c

(svn_wc__db_pristine_get_tempdir): Remove function.

(pristine_get_tempdir): Integrate svn_wc__db_pristine_get_tempdir.

* subversion/tests/libsvn_wc/pristine-store-test.c

(write_and_checksum_temp_file): Remove function.

(pristine_write_read,

pristine_delete_while_open,

reject_mismatching_text): Use svn_wc__db_pristine_prepare_install.

  1. … 3 more files in changeset.
When merging a file, don't use the pristine install preparation code to

create a tempfile, but retrieve the right location properly.

* subversion/libsvn_wc/merge.c

(includes): Stop including adm_files.h. Use other includes directly.

(merge_file_trivial): Create temp file in tempdir, instead of abusing

pristine magic.

Minor simplification. No functional change.

Found by: Dmitry Pavlenko <pavlenko{_AT_}tmatesoft.com>

* subversion/libsvn_wc/merge.c

(merge_text_file): Remove a redundant 'if' condition, and simplify the

associated flow of control a little.

* **/**

Run tools/dev/remove-trailing-whitespace.sh to remove all trailing whitespace

before we branch 1.8, like we did before creating previous branches.

No functional changes.

  1. … 199 more files in changeset.
Merge svn_kind_t into svn_node_kind_t, leaving only one public enumeration

that describes node kinds.

* subversion/include/svn_types.h (svn_kind_t): Removed.

All uses of svn_kind_t were replaced with svn_node_kind_t.

(svn_node_kind_t): New enumeration constant, svn_node_symlink.

Replaces all previous uses of svn_kind_symlink.

(svn__node_kind_from_kind): Removed. All call sites updated.

(svn__kind_from_node_kind): Removed. All call sites updated.

* subversion/libsvn_wc/tree_conflicts.c (node_kind_map):

Added comment about incompatible representation of svn_node_unknown.

* subversion/libsvn_wc/node.c (convert_db_kind_to_node_kind):

May be redundant, and comment is out of date. Added a note about that.

There are also a zillion changes in dependent files, and they all result

from the following renames:

svn_kind_t to svn_node_kind_t

svn_kind_none to svn_node_none

svn_kind_file to svn_node_file

svn_kind_dir to svn_node_dir

svn_kind_unknown to svn_node_unknown

svn_kind_symlink to svn_node_symlink

  1. … 65 more files in changeset.
* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Update an outdated comment.

Fix issue #4238 "merge -cA,B with --accept option aborts if rA conflicts"

and several other conflict resolution issues identified along the way.

* subversion/include/svn_client.h

(svn_client_resolve): Document the choice==unspecified case.

* subversion/libsvn_wc/conflicts.h

(svn_wc__mark_resolved_prop_conflicts): New function.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Slightly simplify the code.

(eval_text_conflict_func_result): Make 'mine-full' do the right thing:

don't use the working file, as it might be the result of a merge attempt

with conflict markers in it.

(svn_wc__conflict_invoke_resolver): When marking conflicts as resolved,

don't just mark them in the DB, do the proper dance that includes

removing the conflict artifact files from disk.

(resolve_conflict_on_node): Add some notes and a correction in the doc

string.

(svn_wc__mark_resolved_prop_conflicts): New function.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): If we succeed in resolving conflicts, then reset

the notification status to 'merged' rather than 'conflicted'.

* subversion/libsvn_wc/props.c

(svn_wc_merge_props3): If we succeed in resolving conflicts, then reset

the notification status to 'merged' rather than 'conflicted'.

* subversion/svn/conflict-callbacks.c

(svn_cl__conflict_func_interactive): If we choose the 'working' state and

no 'merged' value is available, which is common with property conflicts,

then use 'mine'.

* subversion/svn/merge-cmd.c

(svn_cl__merge):

* subversion/tests/cmdline/merge_tests.py

(expected_merge_output, svn_merge): Remove the 'resolved' parameter, as we

no longer need it.

(merge_two_edits_to_same_prop,

merge_automatic_conflict_resolution): When conflicts are resolved,

expect status 'U', instead of status 'C' followed by a 'Resolved'

notification.

* subversion/tests/cmdline/resolve_tests.py

(multi_range_merge_with_accept): Remove XFail.

  1. … 8 more files in changeset.
Teach the file merge code to recognize keyword translation even in 'binary'

files. Fixes issue #4221 "Trivial merge of a binary file with svn:keywords

raises a conflict". The problem was that in deciding whether a trivial

merge is possible, it wasn't detranslating keywords in the working file

before comparing with the incoming left and right files.

* subversion/libsvn_wc/merge.c

(detranslate_wc_file): Detranslate keywords even in 'binary' files.

* subversion/tests/cmdline/merge_tests.py

(merge_binary_file_with_keywords): Extend to test multiple permutations.

  1. … 1 more file in changeset.
* subversion/libsvn_wc/merge.c

(detranslate_wc_file): Adjust comment following r1434444.

* subversion/libsvn_wc/merge.c

(detranslate_wc_file): Clarify code and doc string; no functional change.

Rename 'actual_props' to 'old_actual_props' in several libsvn_wc merge

routines, for clarity.

* subversion/libsvn_wc/wc.h

(svn_wc__internal_merge, svn_wc__perform_file_merge): Rename the

'actual_props' parameter.

* subversion/libsvn_wc/merge.c

(merge_target_t, svn_wc__internal_merge, svn_wc_merge5): Rename the

'actual_props' member/parameter/variable.

(detranslate_wc_file, merge_text_file): Adjust accordingly.

* subversion/libsvn_wc/update_editor.c

(svn_wc__perform_file_merge): Rename the 'actual_props' parameter. Fix a

comment; tweak a comment.

  1. … 2 more files in changeset.
* subversion/libsvn_wc/merge.c

(merge_file_trivial): Remove an unhelpful comment.

Fill in several optional components of the conflict description structure for

conflict types that didn't have these details in 1.7.

* subversion/libsvn_wc/conflicts.c

(generate_propconflict): Add operation argument and set in description.

(eval_text_conflict_func_result): Organize db, local_abspath as first

non-output argument.

(resolve_text_conflicts): Remove unused arguments. Move output arguments to

the start. Add operation. Update caller.

(setup_tree_conflict_desc): Remove skel argument and add specific arguments.

(svn_wc__conflict_invoke_resolver): Add cancel handling. Collect locations

and pass to helpers.

(svn_wc__read_conflicts): Read locations and pass to helpers.

* subversion/libsvn_wc/conflicts.h

(svn_wc__conflict_invoke_resolver): Add cancel support.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Update caller.

* subversion/libsvn_wc/props.c

(svn_wc_merge_props3): Update caller.

* subversion/libsvn_wc/update_editor.c

(close_directory,

close_file): Update caller.

  1. … 4 more files in changeset.
* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Tweak comments.

Stop propagating the merge_target_t structure into so many subroutines. No

functional change.

* subversion/libsvn_wc/merge.c

(get_prop, maybe_update_target_eols, do_text_merge, do_text_merge_external):

Take just the parameters that we need.

(detranslate_wc_file, merge_text_file, svn_wc__internal_merge):

Update callers.

Improve doc strings.

* subversion/libsvn_wc/merge.c

(merge_text_file): Document the results better.

(merge_binary_file): Fix an inverted sense in a to-do note.

(svn_wc__internal_merge): Remove an unhelpful comment.

* subversion/libsvn_wc/wc.h

(svn_wc__internal_merge): State that this does not change working file

directly on disk.

  1. … 1 more file in changeset.
* subversion/libsvn_wc/merge.c

Extend the doc string and slightly simplify internal comments.

* subversion/libsvn_wc/merge.c

Add some doc strings, extend some doc strings.

Simplify the svn_wc__merge_props() API by restricting it to doing a merge.

Rather than this function also updating the pristine properties with the

same changes, let the callers that need that do that separately.

* subversion/include/private/svn_subr_private.h,

subversion/libsvn_subr/properties.c

(svn_prop__patch): New function.

* subversion/libsvn_wc/props.h,

subversion/libsvn_wc/props.c

(svn_wc__merge_props): Remove the 'new_pristine_props' output parameter.

(svn_wc_merge_props3): Adjust caller.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Adjust caller.

* subversion/libsvn_wc/externals.c

(close_file): Update the pristine properties separately, using

svn_prop__patch(), before calling svn_wc__merge_props().

* subversion/libsvn_wc/update_editor.c

(close_directory, close_file): Same.

* subversion/libsvn_wc/wc_db_update_move.c

(update_working_props): Same.

  1. … 7 more files in changeset.
Move function to more sensible location.

* subversion/libsvn_wc/conflicts.c

(svn_wc_create_conflict_result): Move function here...

* subversion/libsvn_wc/merge.c

(svn_wc_create_conflict_result): ... that used to be in this file.

  1. … 1 more file in changeset.
Stop altering the 'actual_props' input parameter in svn_wc__merge_props().

A follow-up to r1417926 which did the same for the 'pristine_props' input.

I thought this might even fix an outstanding bug or two related to using the

post-merge EOL style to translate a pre-merge version of the file, but the

test suite doesn't indicate any change of behaviour.

* subversion/libsvn_wc/props.h

(svn_wc__merge_props): Comment that the three hash input parameters are

'const'. Unfortunately it is awkward to really use the 'const' qualifier

with apr_hash_t because the APR hash API isn't const-correct.

* subversion/libsvn_wc/props.c

(svn_wc__merge_props): Don't alter the 'actual_props' hash. Notice how

this simplifies the code.

(svn_wc__perform_props_merge): No need to make a copy of the 'actual_props'

hash now. Incidentally, remove the redundant initializer.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): No need to make a copy of the 'actual_props' hash now.

Incidentally, remove the redundant initializer.

  1. … 2 more files in changeset.
Remove the 'dry_run' parameter from svn_wc__merge_props(). It isn't needed

here, because this function just returns answers and has no side effects.

* subversion/libsvn_wc/props.h

(svn_wc__merge_props): Remove the 'dry_run' parameter.

* subversion/libsvn_wc/props.c

(svn_wc__merge_props): Remove the 'dry_run' parameter.

(svn_wc__perform_props_merge): Track the change.

* subversion/libsvn_wc/externals.c

(close_file): Track the change.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Track the change.

* subversion/libsvn_wc/update_editor.c

(close_directory, close_file): Track the change.

  1. … 4 more files in changeset.
Remove the cancellation parameters from svn_wc__merge_props(). We don't need

to be able to cancel at this granularity, and this function no longer

performs any I/O.

* subversion/libsvn_wc/props.c

(svn_wc__merge_props): Remove 'cancel_func' and 'cancel_baton' parameters.

(svn_wc__perform_props_merge): Track the change.

* subversion/libsvn_wc/props.h

(svn_wc__merge_props): Remove 'cancel_func' and 'cancel_baton' parameters.

* subversion/libsvn_wc/externals.c

(close_file): Track the change.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Track the change.

* subversion/libsvn_wc/update_editor.c

(close_directory, close_file): Track the change.

  1. … 4 more files in changeset.
Remove the 'base_merge' parameter from svn_wc__merge_props(), instead

doing a 'base merge' iff the 'new_pristine_props' output parameter is given,

for simplicity.

Also stop altering the 'pristine_props' input hash. No current callers were

affected by that, but by golly it's impolite. We are still altering the

'actual_props' input hash; I'll deal with that later.

* subversion/libsvn_wc/props.h

(svn_wc__merge_props): Remove the 'base_merge' parameter and update the

doc string accordingly.

(svn_wc__perform_props_merge): Update doc string to explain its

'base_merge' parameter, since there is no longer an equivalent

documentation under svn_wc__merge_props().

* subversion/libsvn_wc/props.c

(svn_wc__perform_props_merge): Track the change.

(svn_wc__merge_props): Remove the 'base_merge' parameter and change how

the 'new_pristine_props' output parameter works. No longer alter the

'pristine_props' input hash.

* subversion/libsvn_wc/externals.c

(close_file): Track the change.

* subversion/libsvn_wc/merge.c

(svn_wc_merge5): Track the change.

* subversion/libsvn_wc/update_editor.c

(close_directory, close_file): Track the change.

  1. … 4 more files in changeset.