* subversion/libsvn_wc/questions.c (modcheck_baton_t, modcheck_callback): Move here from update_editor.c. Support ignore_unversioned. (svn_wc__node_has_local_mods): Move here. Perform db changes check first. (svn_wc__has_local_mods): Use svn_wc__node_has_local_mods.
* subversion/libsvn_wc/wc_db.c (has_local_mods): Rename to... (has_db_mods): ... and leave walking the working copy to the status walker. (svn_wc__db_has_local_mods): Rename to... (svn_wc__db_has_db_mods): ... this.
Make svn_wc__db_base_delete() take a single argument to specify that you either want to keep the working copy the same (by copying to WORKING if necessary), or want to remove everything.
This removes some of the calculation logic from the callers and as such causes some behavior changes that need further tweaks. The current behavior already fixes a few bugs, but I'm not entirely sure why this has so much effect on the conflict resolver without changing the NODES layout, nor the conflict skels.
* subversion/libsvn_wc/update_editor.c (delete_entry): Simplify calculations that can be done in the db layer. (close_edit): Update caller.
* subversion/libsvn_wc/wc_db.c (db_base_remove): Calculate what must be done on a single argument. Always process moves, not only when somebody installs a new conflict. Remove a bit of double work. (svn_wc__db_base_remove): Update caller. (svn_wc__db_op_make_copy_internal): Make moving the moves to the direct delete of BASE optional in the internal api. (svn_wc__db_op_make_copy): Update caller.
* subversion/libsvn_wc/wc_db.h (svn_wc__db_base_remove): Update prototype and docs.