You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2012/07/13 19:34:12 UTC
svn commit: r1361307 - /subversion/trunk/subversion/libsvn_wc/update_editor.c
Author: rhuijben
Date: Fri Jul 13 17:34:11 2012
New Revision: 1361307
URL: http://svn.apache.org/viewvc?rev=1361307&view=rev
Log:
* subversion/libsvn_wc/update_editor.c
(modcheck_baton_t): Add root of walk.
(modcheck_callback): Only when checking the root of a copy we should skip
certain changes. In all other cases we want to see local changes as a
tree conflict.
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=1361307&r1=1361306&r2=1361307&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/update_editor.c (original)
+++ subversion/trunk/subversion/libsvn_wc/update_editor.c Fri Jul 13 17:34:11 2012
@@ -1247,6 +1247,7 @@ typedef struct modcheck_baton_t {
svn_boolean_t found_mod; /* whether a modification has been found */
svn_boolean_t found_not_delete; /* Found a not-delete modification */
svn_boolean_t is_copy; /* check for post-copy modifications only */
+ const char *modcheck_root_abspath;
} modcheck_baton_t;
/* An implementation of svn_wc_status_func4_t. */
@@ -1276,10 +1277,19 @@ modcheck_callback(void *baton,
case svn_wc_status_obstructed:
if (status->prop_status != svn_wc_status_modified)
break;
- /* Fall through in the found modification case */
+
+ mb->found_mod = TRUE;
+ mb->found_not_delete = TRUE;
+ /* Exit from the status walker: We know what we want to know */
+ return svn_error_create(SVN_ERR_CEASE_INVOCATION, NULL, NULL);
case svn_wc_status_added:
- if (!mb->is_copy)
+ /* Ignore the copy status if we expect a copy, but don't ignore
+ other changes */
+ if (!mb->is_copy
+ || status->text_status == svn_wc_status_modified
+ || status->prop_status == svn_wc_status_modified
+ || strcmp(mb->modcheck_root_abspath, local_abspath) != 0)
{
mb->found_mod = TRUE;
mb->found_not_delete = TRUE;
@@ -1323,6 +1333,7 @@ node_has_local_mods(svn_boolean_t *modif
modcheck_baton.db = db;
modcheck_baton.is_copy = is_copy;
+ modcheck_baton.modcheck_root_abspath = local_abspath;
/* Walk the WC tree for status with depth infinity, looking for any local
* modifications. If it's a "sparse" directory, that's OK: there can be