38
38
#endif /* __cplusplus */
40
/* BASE_MERGE is a pre-1.7 concept on property merging. It allowed callers
41
to alter the pristine properties *outside* of an editor drive. That is
42
very dangerous: the pristines should always correspond to something from
43
the repository, and that should only arrive through the update editor.
45
For 1.7, we're removing this support. Some old code is being left around
46
in case we decide to change this.
48
For more information, see ^/notes/api-errata/wc006.txt
50
#undef SVN__SUPPORT_BASE_MERGE
52
40
/* Internal function for diffing props. See svn_wc_get_prop_diffs2(). */
54
42
svn_wc__internal_propdiff(apr_array_header_t **propchanges,
68
56
apr_pool_t *result_pool,
69
57
apr_pool_t *scratch_pool);
59
/* Validate and canonicalize the PROPS like svn_wc_prop_set4() does;
60
* see that function for details of the SKIP_SOME_CHECKS option.
62
* The properties are checked against the node at LOCAL_ABSPATH (which
63
* need not be under version control) of kind KIND. This text of this
64
* node may be read (if it is a file) in order to validate the
65
* svn:eol-style property.
67
* Only regular props are accepted; WC props and entry props raise an error
68
* (unlike svn_wc_prop_set4() which accepts WC props).
70
* Set *PREPARED_PROPS to the resulting canonicalized properties,
71
* allocating any new data in RESULT_POOL but making shallow copies of
72
* keys and unchanged values from PROPS.
75
svn_wc__canonicalize_props(apr_hash_t **prepared_props,
76
const char *local_abspath,
77
svn_node_kind_t node_kind,
78
const apr_hash_t *props,
79
svn_boolean_t skip_some_checks,
80
apr_pool_t *result_pool,
81
apr_pool_t *scratch_pool);
72
84
/* Given LOCAL_ABSPATH/DB and an array of PROPCHANGES based on
73
85
SERVER_BASEPROPS, calculate what changes should be applied to the working
76
Return working queue operations in WORK_ITEMS and a new set of actual
77
(NEW_ACTUAL_PROPS) and pristine properties (NEW_PRISTINE_PROPS).
79
88
We return the new property collections to the caller, so the caller
80
89
can combine the property update with other operations.
82
91
If SERVER_BASEPROPS is NULL then use the pristine props as PROPCHANGES
85
If BASE_MERGE is FALSE then only change working properties; if TRUE,
86
change both the pristine and working properties. (Only the update editor
87
should use BASE_MERGE is TRUE)
89
If conflicts are found when merging, create a temporary .prej file,
90
and provide working queue operations to write the conflict information
91
into the .prej file later. Modify base properties unconditionally,
92
if BASE_MERGE is TRUE, they do not generate conficts.
94
TODO ### LEFT_VERSION and RIGHT_VERSION ...
98
TODO ### CONFLICT_FUNC/CONFLICT_BATON ...
94
Return the new set of actual properties in *NEW_ACTUAL_PROPS.
96
Append any conflicts of the actual props to *CONFLICT_SKEL. (First
97
allocate *CONFLICT_SKEL from RESULT_POOL if it is initially NULL.
98
CONFLICT_SKEL itself must not be NULL.)
100
100
If STATE is non-null, set *STATE to the state of the local properties
101
after the merge, one of:
103
svn_wc_notify_state_unchanged
104
svn_wc_notify_state_changed
105
svn_wc_notify_state_merged
106
svn_wc_notify_state_conflicted
103
svn_wc__merge_props(svn_skel_t **work_items,
109
svn_wc__merge_props(svn_skel_t **conflict_skel,
104
110
svn_wc_notify_state_t *state,
105
apr_hash_t **new_pristine_props,
106
111
apr_hash_t **new_actual_props,
107
112
svn_wc__db_t *db,
108
113
const char *local_abspath,
109
svn_wc__db_kind_t kind,
110
const svn_wc_conflict_version_t *left_version,
111
const svn_wc_conflict_version_t *right_version,
112
apr_hash_t *server_baseprops,
113
apr_hash_t *pristine_props,
114
apr_hash_t *actual_props,
114
/*const*/ apr_hash_t *server_baseprops,
115
/*const*/ apr_hash_t *pristine_props,
116
/*const*/ apr_hash_t *actual_props,
115
117
const apr_array_header_t *propchanges,
116
svn_boolean_t base_merge,
117
svn_boolean_t dry_run,
118
svn_wc_conflict_resolver_func2_t conflict_func,
119
void *conflict_baton,
120
svn_cancel_func_t cancel_func,
122
118
apr_pool_t *result_pool,
123
119
apr_pool_t *scratch_pool);
167
147
apr_pool_t *result_pool,
168
148
apr_pool_t *scratch_pool);
171
/* Just like svn_wc_merge_props3(), but WITH a BASE_MERGE parameter. */
173
svn_wc__perform_props_merge(svn_wc_notify_state_t *state,
175
const char *local_abspath,
176
const svn_wc_conflict_version_t *left_version,
177
const svn_wc_conflict_version_t *right_version,
178
apr_hash_t *baseprops,
179
const apr_array_header_t *propchanges,
180
svn_boolean_t base_merge,
181
svn_boolean_t dry_run,
182
svn_wc_conflict_resolver_func2_t conflict_func,
183
void *conflict_baton,
184
svn_cancel_func_t cancel_func,
186
apr_pool_t *scratch_pool);
188
150
#ifdef __cplusplus
190
152
#endif /* __cplusplus */