subversion

Checkout Tools
  • last updated 6 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 1727785 is being indexed.

[Reverted in r1727789]

Reduce memory consumption of DAV merge responses (commits).

* subversion/mod_dav_svn/merge.c

(do_resources): Since the paths in the changes list provided by the FS

are already unique, we only need to track thoes that

might clash with ones we add ourselves.

* subversion/svn/conflict-callbacks.c: Stop including svn_wc_private.h.

* subversion/libsvn_client/resolved.c

(svn_client_conflict_prop_get_resolution_options): Ensure that options

returned from here live in writable memory so that option->type_data

can be written to. Should fix access violation on Windows.

Found by: svn-windows-local buildbot

* subversion/libsvn_client/resolved.c

(prop_conflict_option): Fix the callback for 'base' property conflict option.

* subversion/svn/conflict-callbacks.c

(mark_conflict_resolved): Use the new client conflict API to mark

conflicts as resolved, instead of calling into libsvn_wc.

* subversion/libsvn_client/resolved.c

(prop_conflicts): Allow 'base', 'mine-conflict', and 'theirs-conflict'

for property conflicts because libsvn_wc supports this.

At present, libsvn_wc treats 'mine-conflict' and 'theirs-conflict'

just like 'mine-full' and 'theirs-full'. For backwards compat we should

keep accepting them, and perhaps we'll decide to make 'mine-conflict'

and 'theirs-conflict' do something different in the future.

* subversion/libsvn_client/resolved.c

(svn_client_conflict_tree_resolve_by_id): Add a hack that makes the

'--accept mine-conflict' option work for 2 specific tree conflicts.

In Subversion 1.9 these conflicts could be resolved to 'mine-conflict'

and we should keep allowing this for backwards compatibility, even if

the conflict prompt doesn't offer this option anymore.

* subversion/libsvn_client/resolved.c

(svn_client_conflict_tree_get_resolution_options): Always add an option

which allows the user to accept the current working copy state. This option

was not added if automated resolution is possible, but it needs to be

always available so that '--accept working' can function.

* subversion/libsvn_client/resolved.c

(text_conflict_options): Add svn_client_conflict_option_base_text to the

list of valid text conflict options. Missed by accident.

* subversion/libsvn_client/resolved.c

(resolve_conflict): Plug an error leak.

Remove unused path change types from FSX containers.

* subversion/libsvn_fs_x/changes.c

(CHANGE_KIND_MASK): Update as we use one bit less now.

(CHANGE_KIND_RESET,

CHANGE_KIND_MOVE,

CHANGE_KIND_MOVEREPLACE): Remove these unused change kinds.

Add support for the mergeinfo_mod flag to FSX changed paths list containers.

This had been omitted by accident.

* subversion/libsvn_fs_x/changes.c

(CHANGE_MERGEINFO_MOD): Define bit we use to represent the flag.

(append_change): Store the new flag.

(svn_fs_x__changes_get_list): Return the new flag.

Cleanse FSX changed paths lists code from the renmants of noderev_id.

* subversion/libsvn_fs_x/fs.h

(svn_fs_x__change_t): Remove noderev ID element entirely.

* subversion/libsvn_fs_x/transaction.h

(svn_fs_x__add_change): ID parameter is no longer used.

* subversion/libsvn_fs_x/transaction.c

(svn_fs_x__add_change): Update.

* subversion/libsvn_fs_x/tree.c

(add_change): Update caller.

(x_change_node_prop,

x_make_dir,

x_delete_node,

copy_helper,

x_make_file,

apply_textdelta,

apply_text): Update respective next caller level.

In FSX, remove all code that reads and writes noderev IDs in changed

path lists.

* subversion/libsvn_fs_x/changes.c

(CHANGE_TXN_NODE): No longer needed.

(binary_change_t): Remove noderev ID element.

(append_change,

svn_fs_x__changes_get_list,

svn_fs_x__write_changes_container,

svn_fs_x__read_changes_container,

svn_fs_x__changes_get_list_func): Remove all noderev ID access for

containered changed paths lists.

* subversion/libsvn_fs_x/low_level.c

(read_change,

write_change_entry): No longer read and write noderev IDs when

reading / writing non-packed changes lists.

* subversion/libsvn_fs_x/transaction.c

(fold_change): The noderev ID is now meaningless here.

(svn_fs_x__add_change): Don't store the noderev ID anymore.

(write_final_rev): No longer update the noderev in changed paths lists.

(sanitize_changed_path_info): No longer neccessary.

(commit_body): Update caller.

In FSX, begin getting rid of the redundant noderev IDs within changed

paths lists.

This change dynamically determines the ID for the changed_paths API

implementation, effectively rendering the stored IDs unnecessary.

* subversion/libsvn_fs_x/tree.c

(construct_fs_id): New function to construct the ID object dynamically.

(construct_fs_path_change): Update to call the new utility instead of

using the info provided in CHANGE. Add a

few pass-through parameters.

(x_paths_changed): Update the next level caller.

* subversion/libsvn_fs_fs/id.c

(locale_independent_strtol): Clarify comment. No functional change.

* site/publish/ideas.html

(Project ideas): Add 'svnadmin unpack' as an idea.

* subversion/svn/conflict-callbacks.c

(mark_conflict_resolved): Move this function further up in the file to avoid

a forward declaration.

* subversion/libsvn_client/resolved.c

(conflict_get_internal): Initialize text and tree conflict resolution options

to 'unspecified' rather than 'undefined'.

* subversion/include/svn_client.h

(svn_client_conflict_text_get_resolution,

(svn_client_conflict_tree_get_resolution): Update docstring accordingly.

*subversion/libsvn_client/resolved.c

(svn_client_conflict_prop_get_resolution): Return 'unspecified' rather than

'undefined' for property conflicts which haven't been resolved yet.

*subversion/include/svn_client.h

(svn_client_conflict_prop_get_resolution): Update docstring accordingly.

Create distinct conflict option IDs for our current tree conflict resolution

options (there are only 2 options which actually resolve a tree conflict).

The new options are only used in libsvn_client and 'svn' for now. The

current libsvn_wc interfaces still force us to map conflict option IDs to

svn_wc_conflict_choice_t. As a side effect, --accept mine-conflict still

works with these tree conflicts, but that may change later (we'll need a

different system than a single --accept option to resolve arbitrary tree

conflicts in a non-interactive way).

* subversion/include/svn_client.h

(svn_client_conflict_option_update_move_destination,

svn_client_conflict_option_update_any_moved_away_children): Declare.

(svn_client_conflict_option_id_to_wc_conflict_choice): Declare. This is a

temorary interface which maps option ID to legacy conflict choice.

* subversion/libsvn_client/resolved.c

(conflict_option_id_to_wc_conflict_choice): Rename to ...

(svn_client_conflict_option_id_to_wc_conflict_choice): ... this and expose as

a temporary public API function. Map the new option IDs to the legacy

conflict choice 'mine-conflict' so libsvn_wc will still resolve these

conflicts correctly.

(resolve_conflict): Update caller.

(svn_client_conflict_tree_get_resolution_options): Assign the new option IDs

to their respective tree conflict options.

* subversion/svn/conflict-callbacks.c

(builtin_resolver_options): Add new options IDs. Use code "u" for them,

a mnemonic for "update", instead of "mc" ("mine-conflict").

(conflict_option_id_to_wc_conflict_choice): Remove. This was a copy of

the same function in libsvn_client.

(mark_conflict_resolved): Use the new

svn_client_conflict_option_id_to_wc_conflict_choice() interface.

* STATUS:

Add r1725180 and vote for it (don't serialize uncachable directories)

On the 1.9.x-r1725180 branch:

Merge r1725180 from /trunk, resolve the text conflict and make everything

compile again.

Open 1.9.x backport branch for r1725180.
* subversion/svn/svn.c

* subversion/svnadmin/svnadmin.c

* subversion/svnbench/svnbench.c

* subversion/svnfsfs/svnfsfs.c

* subversion/svnlook/svnlook.c

* subversion/svnrdump/svnrdump.c

* subversion/svnsync/svnsync.c

(main): Exit via SIGINT when SIGINT is caught.

In the interactive conflict resolver, use the option id 'unspecified' to

indicate the user hasn't made a choice yet, rather than 'undefined' which

is otherwise used to mark 'svn' client-specific conflict options as such.

Also, ensure the variable containing the user's answer is always initialized

before prompting.

* subversion/svn/conflict-callbacks.c

(handle_text_conflict, handle_prop_conflicts): Use the

svn_client_conflict_option_unspecified option instead of

svn_client_conflict_option_undefined to mark the state where

the user hasn't made a choice yet.

(handle_one_prop_conflict, handle_tree_conflict): Same, and make sure to

initialize option_id.

Split handling of --accept option and interactive prompting into 2 functions.

No functional change.

* subversion/svn/conflict-callbacks.c

(resolve_conflict_by_accept_option): New, based on the code from

resolve_conflict_interactively() but returns an a conflict option ID

via an output parameter. This allows the caller to tell whether the

--accept option is resolved the conflict.

(resolve_conflict_interactively): Stop handling the --accept option in here

and remove related parameters.

(svn_cl__resolve_conflict): Update caller.

Stop passing a pointer to the --accept option value to interactive conflict

handlers, now that the 'quit' command at the conflict prompt command works

without this hack.

* subversion/svn/conflict-callbacks.c

(handle_text_conflict, handle_one_prop_conflict, handle_prop_conflicts,

handle_tree_conflict): Remove accept_which output parameter.

(resolve_conflict_interactively): Update caller.

Make the 'quit' command at the conflict prompt actually quit right away.

This command worked by side-effect of postponing all remaining conflicts

but didn't actually stop the conflict walk.

The QUIT flag passed around in the code was never actually read, just written.

* subversion/svn/resolve-cmd.c

(conflict_status_walker): Check the conflict resolver QUIT flag and cancel

the status walk if it is set.

(walk_conflicts): Check for SVN_ERR_CANCELLED in combination with QUIT and

don't treat this as an error. Don't write messages about being unable

to resolve conflicts if the user canceled by hitting Ctrl-C, just exit.

* subversion/svn/conflict-callbacks.c

(svn_cl__interactive_conflict_baton_t): Remove. Has been unused for a while.