You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/06/11 18:33:28 UTC
svn commit: r1491868 - /subversion/trunk/subversion/libsvn_wc/update_editor.c
Author: stsp
Date: Tue Jun 11 16:33:28 2013
New Revision: 1491868
URL: http://svn.apache.org/r1491868
Log:
Add missing conflict callback invocations for some tree conflicts during update.
Fixes a problem where some updates would flag a conflict but would not
invoke the interactive conflict resolver when the update is done.
Patch by: rhuijben
me
* subversion/libsvn_wc/update_editor.c
(mark_directory_edited, mark_file_edited, delete_entry, add_directory,
add_file): Invoke the conflict callback just before notifying new tree
conflicts.
Modified:
subversion/trunk/subversion/libsvn_wc/update_editor.c
Modified: subversion/trunk/subversion/libsvn_wc/update_editor.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/update_editor.c?rev=1491868&r1=1491867&r2=1491868&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/trunk/subversion/libsvn_wc/update_editor.c Tue Jun 11 16:33:28 2013
@@ -898,6 +898,8 @@ complete_conflict(svn_skel_t *conflict,
static svn_error_t *
mark_directory_edited(struct dir_baton *db, apr_pool_t *scratch_pool)
{
+ struct edit_baton *eb = db->edit_baton;
+
if (db->edited)
return SVN_NO_ERROR;
@@ -921,9 +923,20 @@ mark_directory_edited(struct dir_baton *
db->edit_conflict, NULL,
scratch_pool));
+ if (eb->conflict_func)
+ SVN_ERR(svn_wc__conflict_invoke_resolver(eb->db, db->local_abspath,
+ db->edit_conflict,
+ NULL /* merge_options */,
+ eb->conflict_func,
+ eb->conflict_baton,
+ eb->cancel_func,
+ eb->cancel_baton,
+ scratch_pool));
+
do_notification(db->edit_baton, db->local_abspath, svn_node_dir,
svn_wc_notify_tree_conflict, scratch_pool);
db->already_notified = TRUE;
+
}
return SVN_NO_ERROR;
@@ -934,6 +947,8 @@ mark_directory_edited(struct dir_baton *
static svn_error_t *
mark_file_edited(struct file_baton *fb, apr_pool_t *scratch_pool)
{
+ struct edit_baton *eb = fb->edit_baton;
+
if (fb->edited)
return SVN_NO_ERROR;
@@ -956,6 +971,16 @@ mark_file_edited(struct file_baton *fb,
fb->edit_conflict, NULL,
scratch_pool));
+ if (eb->conflict_func)
+ SVN_ERR(svn_wc__conflict_invoke_resolver(eb->db, fb->local_abspath,
+ fb->edit_conflict,
+ NULL /* merge_options */,
+ eb->conflict_func,
+ eb->conflict_baton,
+ eb->cancel_func,
+ eb->cancel_baton,
+ scratch_pool));
+
do_notification(fb->edit_baton, fb->local_abspath, svn_node_file,
svn_wc_notify_tree_conflict, scratch_pool);
fb->already_notified = TRUE;
@@ -1938,8 +1963,19 @@ delete_entry(const char *path,
/* Notify. */
if (tree_conflict)
- do_notification(eb, local_abspath, svn_node_unknown,
- svn_wc_notify_tree_conflict, scratch_pool);
+ {
+ if (eb->conflict_func)
+ SVN_ERR(svn_wc__conflict_invoke_resolver(eb->db, local_abspath,
+ tree_conflict,
+ NULL /* merge_options */,
+ eb->conflict_func,
+ eb->conflict_baton,
+ eb->cancel_func,
+ eb->cancel_baton,
+ scratch_pool));
+ do_notification(eb, local_abspath, svn_node_unknown,
+ svn_wc_notify_tree_conflict, scratch_pool);
+ }
else
{
svn_wc_notify_action_t action = svn_wc_notify_update_delete;
@@ -2288,6 +2324,16 @@ add_directory(const char *path,
if (tree_conflict != NULL)
{
+ if (eb->conflict_func)
+ SVN_ERR(svn_wc__conflict_invoke_resolver(eb->db, db->local_abspath,
+ tree_conflict,
+ NULL /* merge_options */,
+ eb->conflict_func,
+ eb->conflict_baton,
+ eb->cancel_func,
+ eb->cancel_baton,
+ pool));
+
db->already_notified = TRUE;
do_notification(eb, db->local_abspath, svn_node_dir,
svn_wc_notify_tree_conflict, pool);
@@ -3379,6 +3425,16 @@ add_file(const char *path,
tree_conflict, NULL,
scratch_pool));
+ if (eb->conflict_func)
+ SVN_ERR(svn_wc__conflict_invoke_resolver(eb->db, fb->local_abspath,
+ tree_conflict,
+ NULL /* merge_options */,
+ eb->conflict_func,
+ eb->conflict_baton,
+ eb->cancel_func,
+ eb->cancel_baton,
+ scratch_pool));
+
fb->already_notified = TRUE;
do_notification(eb, fb->local_abspath, svn_node_file,
svn_wc_notify_tree_conflict, scratch_pool);