Author: rinrab
Date: Thu Nov 28 21:53:31 2024
New Revision: 1922200
URL: http://svn.apache.org/viewvc?rev=1922200&view=rev
Log:
On the 'apply-processor' branch: Store the path in the added_abspaths on its
addition only if its we are also adding its parent.
* subversion/libsvn_client/client.h
(svn_client__apply_processor_callbacks_t::updated_path): Add parent_added
argument to the method.
* subversion/libsvn_client/merge.c
(apply_processor_updated_path): Update implementation to match with the
argument addition.
(apply_processor_updated_path:svn_wc_notify_update_add): Store the path
in the added_abspaths on its addition only if its we are also adding its
parent.
* subversion/libsvn_client/merge_processor.c
(record_update_add, record_update_update): Add parent_added, to pass it
to the cb_table->updated_path() callback then.
(record_update_delete): Always call cb_table->updated_path with
parent_added=FALSE, since parent of the deleted node cannot be added.
(merge_file_changed, merge_file_added,
merge_dir_opened, merge_dir_changed, merge_dir_added):
Calculate what to pass to the parent_added argument based
on the parent baton.
Modified:
subversion/branches/apply-processor/subversion/libsvn_client/client.h
subversion/branches/apply-processor/subversion/libsvn_client/merge.c
subversion/branches/apply-processor/subversion/libsvn_client/merge_processor.c
Modified: subversion/branches/apply-processor/subversion/libsvn_client/client.h
URL:
http://svn.apache.org/viewvc/subversion/branches/apply-processor/subversion/libsvn_client/client.h?rev=1922200&r1=1922199&r2=1922200&view=diff
==============================================================================
--- subversion/branches/apply-processor/subversion/libsvn_client/client.h
(original)
+++ subversion/branches/apply-processor/subversion/libsvn_client/client.h Thu
Nov 28 21:53:31 2024
@@ -1294,6 +1294,7 @@ typedef struct svn_client__apply_process
svn_error_t *(*updated_path)(void *baton,
const char *local_abspath,
svn_wc_notify_action_t action,
+ svn_boolean_t parent_added,
apr_pool_t *pool);
svn_error_t *(*mergeinfo_changed)(void *baton,
Modified: subversion/branches/apply-processor/subversion/libsvn_client/merge.c
URL:
http://svn.apache.org/viewvc/subversion/branches/apply-processor/subversion/libsvn_client/merge.c?rev=1922200&r1=1922199&r2=1922200&view=diff
==============================================================================
--- subversion/branches/apply-processor/subversion/libsvn_client/merge.c
(original)
+++ subversion/branches/apply-processor/subversion/libsvn_client/merge.c Thu
Nov 28 21:53:31 2024
@@ -7277,7 +7277,9 @@ apply_processor_skipped_path(void *baton
/* Implements svn_client__apply_processor_callbacks_t::updated_path */
static svn_error_t *
apply_processor_updated_path(void *baton, const char *local_abspath,
- svn_wc_notify_action_t action, apr_pool_t *pool)
+ svn_wc_notify_action_t action,
+ svn_boolean_t parent_added,
+ apr_pool_t *pool)
{
merge_cmd_baton_t *merge_b = baton;
@@ -7325,7 +7327,8 @@ apply_processor_updated_path(void *baton
case svn_wc_notify_update_add:
if (merge_b->merge_source.ancestral || merge_b->reintegrate_merge)
{
- store_path(merge_b->added_abspaths, local_abspath);
+ if (! parent_added)
+ store_path(merge_b->added_abspaths, local_abspath);
}
break;
}
Modified:
subversion/branches/apply-processor/subversion/libsvn_client/merge_processor.c
URL:
http://svn.apache.org/viewvc/subversion/branches/apply-processor/subversion/libsvn_client/merge_processor.c?rev=1922200&r1=1922199&r2=1922200&view=diff
==============================================================================
---
subversion/branches/apply-processor/subversion/libsvn_client/merge_processor.c
(original)
+++
subversion/branches/apply-processor/subversion/libsvn_client/merge_processor.c
Thu Nov 28 21:53:31 2024
@@ -700,12 +700,14 @@ record_update_add(merge_apply_processor_
const char *local_abspath,
svn_node_kind_t kind,
svn_boolean_t notify_replaced,
+ svn_boolean_t parent_added,
apr_pool_t *scratch_pool)
{
if (merge_b->cb_table && merge_b->cb_table->updated_path)
{
SVN_ERR(merge_b->cb_table->updated_path(merge_b->cb_baton, local_abspath,
svn_wc_notify_update_add,
+ parent_added,
scratch_pool));
}
@@ -735,12 +737,14 @@ record_update_update(merge_apply_process
svn_node_kind_t kind,
svn_wc_notify_state_t content_state,
svn_wc_notify_state_t prop_state,
+ svn_boolean_t parent_added,
apr_pool_t *scratch_pool)
{
if (merge_b->cb_table && merge_b->cb_table->updated_path)
{
SVN_ERR(merge_b->cb_table->updated_path(merge_b->cb_baton, local_abspath,
svn_wc_notify_update_update,
+ parent_added,
scratch_pool));
}
@@ -774,6 +778,7 @@ record_update_delete(merge_apply_process
{
SVN_ERR(merge_b->cb_table->updated_path(merge_b->cb_baton, local_abspath,
svn_wc_notify_update_delete,
+ FALSE,
scratch_pool));
}
@@ -1404,6 +1409,7 @@ merge_file_changed(const char *relpath,
{
SVN_ERR(record_update_update(merge_b, local_abspath, svn_node_file,
text_state, property_state,
+ fb->parent_baton && fb->parent_baton->added,
scratch_pool));
}
@@ -1542,7 +1548,9 @@ merge_file_added(const char *relpath,
}
SVN_ERR(record_update_add(merge_b, local_abspath, svn_node_file,
- fb->add_is_replace, scratch_pool));
+ fb->add_is_replace,
+ fb->parent_baton && fb->parent_baton->added,
+ scratch_pool));
return SVN_NO_ERROR;
}
@@ -2177,7 +2185,9 @@ merge_dir_opened(void **new_dir_baton,
if (! db->shadowed && !merge_b->record_only)
SVN_ERR(record_update_add(merge_b, local_abspath, svn_node_dir,
- db->add_is_replace, scratch_pool));
+ db->add_is_replace,
+ pdb && pdb->added,
+ scratch_pool));
}
return SVN_NO_ERROR;
}
@@ -2262,7 +2272,9 @@ merge_dir_changed(const char *relpath,
{
SVN_ERR(record_update_update(merge_b, local_abspath, svn_node_file,
svn_wc_notify_state_inapplicable,
- prop_state, scratch_pool));
+ prop_state,
+ db->parent_baton && db->added,
+ scratch_pool));
}
}
@@ -2317,11 +2329,11 @@ merge_dir_added(const char *relpath,
&& ! merge_b->record_only /* Skip details from
merge_open_dir() */
);
- if (merge_b->cb_table && merge_b->cb_table->updated_path
- && ( !db->parent_baton || !db->parent_baton->added))
+ if (merge_b->cb_table && merge_b->cb_table->updated_path)
{
SVN_ERR(merge_b->cb_table->updated_path(
merge_b->cb_baton, local_abspath, svn_wc_notify_update_add,
+ db->parent_baton && db->parent_baton->added,
scratch_pool));
}