~ubuntu-branches/debian/sid/subversion/sid

« back to all changes in this revision

Viewing changes to subversion/libsvn_client/client.h

  • Committer: Package Import Robot
  • Author(s): James McCoy, Peter Samuelson, James McCoy
  • Date: 2014-01-12 19:48:33 UTC
  • mfrom: (0.2.10)
  • Revision ID: package-import@ubuntu.com-20140112194833-w3axfwksn296jn5x
Tags: 1.8.5-1
[ Peter Samuelson ]
* New upstream release.  (Closes: #725787) Rediff patches:
  - Remove apr-abi1 (applied upstream), rename apr-abi2 to apr-abi
  - Remove loosen-sqlite-version-check (shouldn't be needed)
  - Remove java-osgi-metadata (applied upstream)
  - svnmucc prompts for a changelog if none is provided. (Closes: #507430)
  - Remove fix-bdb-version-detection, upstream uses "apu-config --dbm-libs"
  - Remove ruby-test-wc (applied upstream)
  - Fix “svn diff -r N file” when file has svn:mime-type set.
    (Closes: #734163)
  - Support specifying an encoding for mod_dav_svn's environment in which
    hooks are run.  (Closes: #601544)
  - Fix ordering of “svnadmin dump” paths with certain APR versions.
    (Closes: #687291)
  - Provide a better error message when authentication fails with an
    svn+ssh:// URL.  (Closes: #273874)
  - Updated Polish translations.  (Closes: #690815)

[ James McCoy ]
* Remove all traces of libneon, replaced by libserf.
* patches/sqlite_3.8.x_workaround: Upstream fix for wc-queries-test test
  failurse.
* Run configure with --with-apache-libexecdir, which allows removing part of
  patches/rpath.
* Re-enable auth-test as upstream has fixed the problem of picking up
  libraries from the environment rather than the build tree.
  (Closes: #654172)
* Point LD_LIBRARY_PATH at the built auth libraries when running the svn
  command during the build.  (Closes: #678224)
* Add a NEWS entry describing how to configure mod_dav_svn to understand
  UTF-8.  (Closes: #566148)
* Remove ancient transitional package, libsvn-ruby.
* Enable compatibility with Sqlite3 versions back to Wheezy.
* Enable hardening flags.  (Closes: #734918)
* patches/build-fixes: Enable verbose build logs.
* Build against the default ruby version.  (Closes: #722393)

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 *    under the License.
21
21
 * ====================================================================
22
22
 */
23
 
 
 
23
 
 
24
 
24
25
 
25
26
#ifndef SVN_LIBSVN_CLIENT_H
26
27
#define SVN_LIBSVN_CLIENT_H
36
37
#include "svn_client.h"
37
38
 
38
39
#include "private/svn_magic.h"
 
40
#include "private/svn_client_private.h"
 
41
#include "private/svn_diff_tree.h"
 
42
#include "private/svn_editor.h"
39
43
 
40
44
#ifdef __cplusplus
41
45
extern "C" {
86
90
                                const svn_opt_revision_t *revision,
87
91
                                apr_pool_t *scratch_pool);
88
92
 
89
 
/* Set *COPYFROM_PATH and *COPYFROM_REV to the path (without initial '/')
90
 
   and revision that served as the source of the copy from which PATH_OR_URL
91
 
   at REVISION was created, or NULL and SVN_INVALID_REVNUM (respectively) if
92
 
   PATH_OR_URL at REVISION was not the result of a copy operation. */
93
 
svn_error_t *svn_client__get_copy_source(const char *path_or_url,
94
 
                                         const svn_opt_revision_t *revision,
95
 
                                         const char **copyfrom_path,
96
 
                                         svn_revnum_t *copyfrom_rev,
97
 
                                         svn_client_ctx_t *ctx,
98
 
                                         apr_pool_t *pool);
 
93
/* Set *ORIGINAL_REPOS_RELPATH and *ORIGINAL_REVISION to the original location
 
94
   that served as the source of the copy from which PATH_OR_URL at REVISION was
 
95
   created, or NULL and SVN_INVALID_REVNUM (respectively) if PATH_OR_URL at
 
96
   REVISION was not the result of a copy operation. */
 
97
svn_error_t *
 
98
svn_client__get_copy_source(const char **original_repos_relpath,
 
99
                            svn_revnum_t *original_revision,
 
100
                            const char *path_or_url,
 
101
                            const svn_opt_revision_t *revision,
 
102
                            svn_client_ctx_t *ctx,
 
103
                            apr_pool_t *result_pool,
 
104
                            apr_pool_t *scratch_pool);
99
105
 
100
106
/* Set *START_URL and *START_REVISION (and maybe *END_URL
101
107
   and *END_REVISION) to the revisions and repository URLs of one
105
111
   specify the point(s) of interest (typically the revisions referred
106
112
   to as the "operative range" for a given operation) along that history.
107
113
 
108
 
   END may be of kind svn_opt_revision_unspecified (in which case
 
114
   START_REVISION and/or END_REVISION may be NULL if not wanted.
 
115
   END may be NULL or of kind svn_opt_revision_unspecified (in either case
109
116
   END_URL and END_REVISION are not touched by the function);
110
117
   START and REVISION may not.
111
118
 
 
119
   If PATH is a WC path and REVISION is of kind svn_opt_revision_working,
 
120
   then look at the PATH's copy-from URL instead of its base URL.
 
121
 
112
122
   RA_SESSION should be an open RA session pointing at the URL of PATH,
113
123
   or NULL, in which case this function will open its own temporary session.
114
124
 
128
138
   Use POOL for all allocations.  */
129
139
svn_error_t *
130
140
svn_client__repos_locations(const char **start_url,
131
 
                            svn_opt_revision_t **start_revision,
 
141
                            svn_revnum_t *start_revision,
132
142
                            const char **end_url,
133
 
                            svn_opt_revision_t **end_revision,
 
143
                            svn_revnum_t *end_revision,
134
144
                            svn_ra_session_t *ra_session,
135
145
                            const char *path,
136
146
                            const svn_opt_revision_t *revision,
139
149
                            svn_client_ctx_t *ctx,
140
150
                            apr_pool_t *pool);
141
151
 
 
152
/* Trace a line of history of a particular versioned resource back to a
 
153
 * specific revision.
 
154
 *
 
155
 * Set *OP_LOC_P to the location that the object PEG_LOC had in
 
156
 * revision OP_REVNUM.
 
157
 *
 
158
 * RA_SESSION is an open RA session to the correct repository; it may be
 
159
 * temporarily reparented inside this function. */
 
160
svn_error_t *
 
161
svn_client__repos_location(svn_client__pathrev_t **op_loc_p,
 
162
                           svn_ra_session_t *ra_session,
 
163
                           const svn_client__pathrev_t *peg_loc,
 
164
                           svn_revnum_t op_revnum,
 
165
                           svn_client_ctx_t *ctx,
 
166
                           apr_pool_t *result_pool,
 
167
                           apr_pool_t *scratch_pool);
 
168
 
142
169
 
143
170
/* Set *SEGMENTS to an array of svn_location_segment_t * objects, each
144
 
   representing a reposition location segment for the history of PATH
145
 
   (which is relative to RA_SESSION's session URL) in PEG_REVISION
 
171
   representing a reposition location segment for the history of URL
 
172
   in PEG_REVISION
146
173
   between END_REVISION and START_REVISION, ordered from oldest
147
174
   segment to youngest.  *SEGMENTS may be empty but it will never
148
175
   be NULL.
151
178
   svn_ra_get_location_segments() interface, which see for the rules
152
179
   governing PEG_REVISION, START_REVISION, and END_REVISION.
153
180
 
 
181
   RA_SESSION is an RA session open to the repository of URL; it may be
 
182
   temporarily reparented within this function.
 
183
 
154
184
   CTX is the client context baton.
155
185
 
156
186
   Use POOL for all allocations.  */
157
187
svn_error_t *
158
188
svn_client__repos_location_segments(apr_array_header_t **segments,
159
189
                                    svn_ra_session_t *ra_session,
160
 
                                    const char *path,
 
190
                                    const char *url,
161
191
                                    svn_revnum_t peg_revision,
162
192
                                    svn_revnum_t start_revision,
163
193
                                    svn_revnum_t end_revision,
165
195
                                    apr_pool_t *pool);
166
196
 
167
197
 
168
 
/* Set *ANCESTOR_PATH and *ANCESTOR_REVISION to the youngest common
169
 
   ancestor path (a path relative to the root of the repository) and
170
 
   revision, respectively, of the two locations identified as
171
 
   PATH_OR_URL1@REV1 and PATH_OR_URL2@REV1.  Use the authentication
172
 
   baton cached in CTX to authenticate against the repository.
173
 
   This function assumes that PATH_OR_URL1@REV1 and PATH_OR_URL2@REV1
174
 
   both refer to the same repository.  Use POOL for all allocations. */
 
198
/* Find the common ancestor of two locations in a repository.
 
199
   Ancestry is determined by the 'copy-from' relationship and the normal
 
200
   successor relationship.
 
201
 
 
202
   Set *ANCESTOR_P to the location of the youngest common ancestor of
 
203
   LOC1 and LOC2.  If the locations have no common ancestor (including if
 
204
   they don't have the same repository root URL), set *ANCESTOR_P to NULL.
 
205
 
 
206
   If SESSION is not NULL, use it for retrieving the common ancestor instead
 
207
   of creating a new session.
 
208
 
 
209
   Use the authentication baton cached in CTX to authenticate against
 
210
   the repository.  Use POOL for all allocations.
 
211
 
 
212
   See also svn_client__calc_youngest_common_ancestor() to find youngest
 
213
   common ancestor for already fetched history-as-mergeinfo information.
 
214
 
 
215
   See also svn_client__youngest_common_ancestor().
 
216
*/
175
217
svn_error_t *
176
 
svn_client__get_youngest_common_ancestor(const char **ancestor_path,
177
 
                                         svn_revnum_t *ancestor_revision,
178
 
                                         const char *path_or_url1,
179
 
                                         svn_revnum_t rev1,
180
 
                                         const char *path_or_url2,
181
 
                                         svn_revnum_t rev2,
 
218
svn_client__get_youngest_common_ancestor(svn_client__pathrev_t **ancestor_p,
 
219
                                         const svn_client__pathrev_t *loc1,
 
220
                                         const svn_client__pathrev_t *loc2,
 
221
                                         svn_ra_session_t *session,
182
222
                                         svn_client_ctx_t *ctx,
183
 
                                         apr_pool_t *pool);
184
 
 
185
 
/* Given PATH_OR_URL, which contains either a working copy path or an
186
 
   absolute URL, a peg revision PEG_REVISION, and a desired revision
187
 
   REVISION, create an RA connection to that object as it exists in
188
 
   that revision, following copy history if necessary.  If REVISION is
189
 
   younger than PEG_REVISION, then PATH_OR_URL will be checked to see
190
 
   that it is the same node in both PEG_REVISION and REVISION.  If it
191
 
   is not, then @c SVN_ERR_CLIENT_UNRELATED_RESOURCES is returned.
192
 
 
193
 
   BASE_DIR_ABSPATH is the working copy path the ra_session corresponds to,
194
 
   should only be used if PATH_OR_URL is a url.
195
 
 
196
 
   If PEG_REVISION's kind is svn_opt_revision_unspecified, it is
197
 
   interpreted as "head" for a URL or "working" for a working-copy path.
198
 
 
199
 
   Store the resulting ra_session in *RA_SESSION_P.  Store the actual
200
 
   revision number of the object in *REV_P, and the final resulting
201
 
   URL in *URL_P.
202
 
 
203
 
   Use authentication baton cached in CTX to authenticate against the
204
 
   repository.
205
 
 
206
 
   Use POOL for all allocations. */
 
223
                                         apr_pool_t *result_pool,
 
224
                                         apr_pool_t *scratch_pool);
 
225
 
 
226
/* Find the common ancestor of two locations in a repository using already
 
227
   fetched history-as-mergeinfo information.
 
228
 
 
229
   Ancestry is determined by the 'copy-from' relationship and the normal
 
230
   successor relationship.
 
231
 
 
232
   Set *ANCESTOR_P to the location of the youngest common ancestor of
 
233
   LOC1 and LOC2.  If the locations have no common ancestor (including if
 
234
   they don't have the same repository root URL), set *ANCESTOR_P to NULL.
 
235
 
 
236
   HISTORY1, HAS_REV_ZERO_HISTORY1, HISTORY2, HAS_REV_ZERO_HISTORY2 are
 
237
   history-as-mergeinfo information as returned by
 
238
   svn_client__get_history_as_mergeinfo() for LOC1 and LOC2 respectively.
 
239
 
 
240
   See also svn_client__get_youngest_common_ancestor().
 
241
 
 
242
*/
207
243
svn_error_t *
208
 
svn_client__ra_session_from_path(svn_ra_session_t **ra_session_p,
209
 
                                 svn_revnum_t *rev_p,
210
 
                                 const char **url_p,
211
 
                                 const char *path_or_url,
212
 
                                 const char *base_dir_abspath,
213
 
                                 const svn_opt_revision_t *peg_revision,
214
 
                                 const svn_opt_revision_t *revision,
215
 
                                 svn_client_ctx_t *ctx,
216
 
                                 apr_pool_t *pool);
 
244
svn_client__calc_youngest_common_ancestor(svn_client__pathrev_t **ancestor_p,
 
245
                                          const svn_client__pathrev_t *loc1,
 
246
                                          apr_hash_t *history1,
 
247
                                          svn_boolean_t has_rev_zero_history1,
 
248
                                          const svn_client__pathrev_t *loc2,
 
249
                                          apr_hash_t *history2,
 
250
                                          svn_boolean_t has_rev_zero_history2,
 
251
                                          apr_pool_t *result_pool,
 
252
                                          apr_pool_t *scratch_pool);
217
253
 
218
254
/* Ensure that RA_SESSION's session URL matches SESSION_URL,
219
 
   reparenting that session if necessary.  If reparenting occurs,
220
 
   store the previous session URL in *OLD_SESSION_URL (so that if the
 
255
   reparenting that session if necessary.
 
256
   Store the previous session URL in *OLD_SESSION_URL (so that if the
221
257
   reparenting is meant to be temporary, the caller can reparent the
222
 
   session back to where it was); otherwise set *OLD_SESSION_URL to
223
 
   NULL.
 
258
   session back to where it was).
224
259
 
225
260
   If SESSION_URL is NULL, treat this as a magic value meaning "point
226
 
   the RA session to the root of the repository".  */
 
261
   the RA session to the root of the repository".
 
262
 
 
263
   NOTE: The typical usage pattern for this functions is:
 
264
 
 
265
       const char *old_session_url;
 
266
       SVN_ERR(svn_client__ensure_ra_session_url(&old_session_url,
 
267
                                                 ra_session,
 
268
                                                 new_session_url,
 
269
                                                 pool);
 
270
 
 
271
       [...]
 
272
 
 
273
       SVN_ERR(svn_ra_reparent(ra_session, old_session_url, pool));
 
274
*/
227
275
svn_error_t *
228
276
svn_client__ensure_ra_session_url(const char **old_session_url,
229
277
                                  svn_ra_session_t *ra_session,
230
278
                                  const char *session_url,
231
279
                                  apr_pool_t *pool);
232
280
 
233
 
/* Set REPOS_ROOT, allocated in RESULT_POOL to the URL which represents
234
 
   the root of the repository in with ABSPATH_OR_URL is versioned.
235
 
   Use the authentication baton and working copy context cached in CTX as
236
 
   necessary.
237
 
 
238
 
   Use SCRATCH_POOL for temporary allocations. */
239
 
svn_error_t *
240
 
svn_client__get_repos_root(const char **repos_root,
241
 
                           const char *abspath_or_url,
242
 
                           svn_client_ctx_t *ctx,
243
 
                           apr_pool_t *result_pool,
244
 
                           apr_pool_t *scratch_pool);
245
 
 
246
 
/* Return the path of ABSPATH_OR_URL relative to the repository root
247
 
   (REPOS_ROOT) in REL_PATH (URI-decoded), both allocated in RESULT_POOL.
248
 
   If INCLUDE_LEADING_SLASH is set, the returned result will have a leading
249
 
   slash; otherwise, it will not.
250
 
 
251
 
   The remaining parameters are used to procure the repository root.
252
 
   Either REPOS_ROOT or RA_SESSION -- but not both -- may be NULL.
253
 
   REPOS_ROOT should be passed when available as an optimization (in
254
 
   that order of preference).
255
 
 
256
 
   CAUTION:  While having a leading slash on a so-called relative path
257
 
   might work out well for functionality that interacts with
258
 
   mergeinfo, it results in a relative path that cannot be naively
259
 
   svn_path_join()'d with a repository root URL to provide a full URL.
260
 
 
261
 
   Use SCRATCH_POOL for temporary allocations.
262
 
*/
263
 
svn_error_t *
264
 
svn_client__path_relative_to_root(const char **rel_path,
265
 
                                  svn_wc_context_t *wc_ctx,
266
 
                                  const char *abspath_or_url,
267
 
                                  const char *repos_root,
268
 
                                  svn_boolean_t include_leading_slash,
269
 
                                  svn_ra_session_t *ra_session,
270
 
                                  apr_pool_t *result_pool,
271
 
                                  apr_pool_t *scratch_pool);
272
 
 
273
 
/* A default error handler for use with svn_wc_walk_entries3().  Returns
274
 
   ERR in all cases. */
275
 
svn_error_t *
276
 
svn_client__default_walker_error_handler(const char *path,
277
 
                                         svn_error_t *err,
278
 
                                         void *walk_baton,
279
 
                                         apr_pool_t *pool);
280
 
 
281
 
 
282
281
/* ---------------------------------------------------------------- */
283
 
 
 
282
 
 
283
 
284
284
/*** RA callbacks ***/
285
285
 
286
286
 
299
299
      - COMMIT_ITEMS is an array of svn_client_commit_item_t *
300
300
        structures, present only for working copy commits, NULL otherwise.
301
301
 
302
 
      - USE_ADMIN indicates that the RA layer should create tempfiles
303
 
        in the administrative area instead of in the working copy itself,
304
 
        and read properties from the administrative area.
 
302
      - WRITE_DAV_PROPS indicates that the RA layer can clear and write
 
303
        the DAV properties in the working copy of BASE_DIR_ABSPATH.
305
304
 
306
 
      - READ_ONLY_WC indicates that the RA layer should not attempt to
307
 
        modify the WC props directly.
 
305
      - READ_DAV_PROPS indicates that the RA layer should not attempt to
 
306
        modify the WC props directly, but is still allowed to read them.
308
307
 
309
308
   BASE_DIR_ABSPATH may be NULL if the RA operation does not correspond to a
310
 
   working copy (in which case, USE_ADMIN should be FALSE).
 
309
   working copy (in which case, WRITE_DAV_PROPS and READ_DAV_PROPS must be
 
310
   FALSE.
 
311
 
 
312
   If WRITE_DAV_PROPS and READ_DAV_PROPS are both FALSE the working copy may
 
313
   still be used for locating pristine files via their SHA1.
311
314
 
312
315
   The calling application's authentication baton is provided in CTX,
313
316
   and allocations related to this session are performed in POOL.
320
323
                                     const char *base_url,
321
324
                                     const char *base_dir_abspath,
322
325
                                     const apr_array_header_t *commit_items,
323
 
                                     svn_boolean_t use_admin,
324
 
                                     svn_boolean_t read_only_wc,
325
 
                                     svn_client_ctx_t *ctx,
326
 
                                     apr_pool_t *pool);
327
 
 
328
 
 
329
 
 
330
 
/* ---------------------------------------------------------------- */
331
 
 
332
 
/*** Status ***/
333
 
 
334
 
/* Verify that the path can be deleted without losing stuff,
335
 
   i.e. ensure that there are no modified or unversioned resources
336
 
   under PATH.  This is similar to checking the output of the status
337
 
   command.  CTX is used for the client's config options.  POOL is
338
 
   used for all temporary allocations. */
339
 
svn_error_t * svn_client__can_delete(const char *path,
340
 
                                     svn_client_ctx_t *ctx,
341
 
                                     apr_pool_t *pool);
342
 
 
343
 
 
344
 
/* ---------------------------------------------------------------- */
345
 
 
 
326
                                     svn_boolean_t write_dav_props,
 
327
                                     svn_boolean_t read_dav_props,
 
328
                                     svn_client_ctx_t *ctx,
 
329
                                     apr_pool_t *result_pool,
 
330
                                     apr_pool_t *scratch_pool);
 
331
 
 
332
 
 
333
svn_error_t *
 
334
svn_client__ra_provide_base(svn_stream_t **contents,
 
335
                            svn_revnum_t *revision,
 
336
                            void *baton,
 
337
                            const char *repos_relpath,
 
338
                            apr_pool_t *result_pool,
 
339
                            apr_pool_t *scratch_pool);
 
340
 
 
341
 
 
342
svn_error_t *
 
343
svn_client__ra_provide_props(apr_hash_t **props,
 
344
                             svn_revnum_t *revision,
 
345
                             void *baton,
 
346
                             const char *repos_relpath,
 
347
                             apr_pool_t *result_pool,
 
348
                             apr_pool_t *scratch_pool);
 
349
 
 
350
 
 
351
svn_error_t *
 
352
svn_client__ra_get_copysrc_kind(svn_node_kind_t *kind,
 
353
                                void *baton,
 
354
                                const char *repos_relpath,
 
355
                                svn_revnum_t src_revision,
 
356
                                apr_pool_t *scratch_pool);
 
357
 
 
358
 
 
359
void *
 
360
svn_client__ra_make_cb_baton(svn_wc_context_t *wc_ctx,
 
361
                             apr_hash_t *relpath_map,
 
362
                             apr_pool_t *result_pool);
 
363
 
 
364
/* ---------------------------------------------------------------- */
 
365
 
 
366
 
346
367
/*** Add/delete ***/
347
368
 
348
 
/* Read automatic properties matching PATH from CTX->config.
349
 
   Set *PROPERTIES to a hash containing propname/value pairs
350
 
   (const char * keys mapping to svn_string_t * values), or if
351
 
   auto-props are disabled, set *PROPERTIES to NULL.
352
 
   Set *MIMETYPE to the mimetype, if any, or to NULL.
353
 
   If MAGIC_COOKIE is not NULL and no mime-type can be determined
354
 
   via CTX->config try to detect the mime-type with libmagic.
355
 
   Allocate the hash table, keys, values, and mimetype in POOL. */
356
 
svn_error_t *svn_client__get_auto_props(apr_hash_t **properties,
357
 
                                        const char **mimetype,
358
 
                                        const char *path,
359
 
                                        svn_magic__cookie_t *magic_cookie,
360
 
                                        svn_client_ctx_t *ctx,
361
 
                                        apr_pool_t *pool);
362
 
 
 
369
/* If AUTOPROPS is not null: Then read automatic properties matching PATH
 
370
   from AUTOPROPS.  AUTOPROPS is is a hash as per
 
371
   svn_client__get_all_auto_props.  Set *PROPERTIES to a hash containing
 
372
   propname/value pairs (const char * keys mapping to svn_string_t * values).
 
373
 
 
374
   If AUTOPROPS is null then set *PROPERTIES to an empty hash.
 
375
 
 
376
   If *MIMETYPE is null or "application/octet-stream" then check AUTOPROPS
 
377
   for a matching svn:mime-type.  If AUTOPROPS is null or no match is found
 
378
   and MAGIC_COOKIE is not NULL, then then try to detect the mime-type with
 
379
   libmagic.  If a mimetype is found then add it to *PROPERTIES and set
 
380
   *MIMETYPE to the mimetype value or NULL otherwise.
 
381
 
 
382
   Allocate the *PROPERTIES and its contents as well as *MIMETYPE, in
 
383
   RESULT_POOL.  Use SCRATCH_POOL for temporary allocations. */
 
384
svn_error_t *svn_client__get_paths_auto_props(
 
385
  apr_hash_t **properties,
 
386
  const char **mimetype,
 
387
  const char *path,
 
388
  svn_magic__cookie_t *magic_cookie,
 
389
  apr_hash_t *autoprops,
 
390
  svn_client_ctx_t *ctx,
 
391
  apr_pool_t *result_pool,
 
392
  apr_pool_t *scratch_pool);
 
393
 
 
394
/* Gather all auto-props from CTX->config (or none if auto-props are
 
395
   disabled) and all svn:auto-props explicitly set on or inherited
 
396
   by PATH_OR_URL.
 
397
 
 
398
   If PATH_OR_URL is an unversioned WC path then gather the
 
399
   svn:auto-props inherited by PATH_OR_URL's nearest versioned
 
400
   parent.
 
401
 
 
402
   If PATH_OR_URL is a URL ask for the properties @HEAD, if it is a WC
 
403
   path as sfor the working properties.
 
404
 
 
405
   Store both types of auto-props in *AUTOPROPS, a hash mapping const
 
406
   char * file patterns to another hash which maps const char * property
 
407
   names to const char *property values.
 
408
 
 
409
   If a given property name exists for the same pattern in both the config
 
410
   file and in an a svn:auto-props property, the latter overrides the
 
411
   former.  If a given property name exists for the same pattern in two
 
412
   different inherited svn:auto-props, then the closer path-wise
 
413
   property overrides the more distant. svn:auto-props explicitly set
 
414
   on PATH_OR_URL have the highest precedence and override inherited props
 
415
   and config file settings.
 
416
 
 
417
   Allocate *AUTOPROPS in RESULT_POOL.  Use SCRATCH_POOL for temporary
 
418
   allocations. */
 
419
svn_error_t *svn_client__get_all_auto_props(apr_hash_t **autoprops,
 
420
                                            const char *path_or_url,
 
421
                                            svn_client_ctx_t *ctx,
 
422
                                            apr_pool_t *result_pool,
 
423
                                            apr_pool_t *scratch_pool);
 
424
 
 
425
/* Get a list of ignore patterns defined by the svn:global-ignores
 
426
   properties set on, or inherited by, PATH_OR_URL.  Store the collected
 
427
   patterns as const char * elements in the array *IGNORES.  Allocate
 
428
   *IGNORES and its contents in RESULT_POOL.  Use  SCRATCH_POOL for
 
429
   temporary allocations. */
 
430
svn_error_t *svn_client__get_inherited_ignores(apr_array_header_t **ignores,
 
431
                                               const char *path_or_url,
 
432
                                               svn_client_ctx_t *ctx,
 
433
                                               apr_pool_t *result_pool,
 
434
                                               apr_pool_t *scratch_pool);
363
435
 
364
436
/* The main logic for client deletion from a working copy. Deletes PATH
365
437
   from CTX->WC_CTX.  If PATH (or any item below a directory PATH) is
372
444
   If DRY_RUN is TRUE all the checks are made to ensure that the delete can
373
445
   occur, but the working copy is not modified.  If NOTIFY_FUNC is not
374
446
   null, it is called with NOTIFY_BATON for each file or directory deleted. */
375
 
svn_error_t * svn_client__wc_delete(const char *path,
376
 
                                    svn_boolean_t force,
377
 
                                    svn_boolean_t dry_run,
378
 
                                    svn_boolean_t keep_local,
379
 
                                    svn_wc_notify_func2_t notify_func,
380
 
                                    void *notify_baton,
381
 
                                    svn_client_ctx_t *ctx,
382
 
                                    apr_pool_t *pool);
 
447
svn_error_t *
 
448
svn_client__wc_delete(const char *local_abspath,
 
449
                      svn_boolean_t force,
 
450
                      svn_boolean_t dry_run,
 
451
                      svn_boolean_t keep_local,
 
452
                      svn_wc_notify_func2_t notify_func,
 
453
                      void *notify_baton,
 
454
                      svn_client_ctx_t *ctx,
 
455
                      apr_pool_t *pool);
 
456
 
 
457
 
 
458
/* Like svn_client__wc_delete(), but deletes multiple TARGETS efficiently. */
 
459
svn_error_t *
 
460
svn_client__wc_delete_many(const apr_array_header_t *targets,
 
461
                           svn_boolean_t force,
 
462
                           svn_boolean_t dry_run,
 
463
                           svn_boolean_t keep_local,
 
464
                           svn_wc_notify_func2_t notify_func,
 
465
                           void *notify_baton,
 
466
                           svn_client_ctx_t *ctx,
 
467
                           apr_pool_t *pool);
 
468
 
383
469
 
384
470
/* Make PATH and add it to the working copy, optionally making all the
385
471
   intermediate parent directories if MAKE_PARENTS is TRUE. */
390
476
                               apr_pool_t *pool);
391
477
 
392
478
/* ---------------------------------------------------------------- */
393
 
 
 
479
 
 
480
 
394
481
/*** Checkout, update and switch ***/
395
482
 
396
483
/* Update a working copy LOCAL_ABSPATH to REVISION, and (if not NULL) set
415
502
 
416
503
   If IGNORE_EXTERNALS is true, do no externals processing.
417
504
 
418
 
   If TIMESTAMP_SLEEP is NULL this function will sleep before
419
 
   returning to ensure timestamp integrity.  If TIMESTAMP_SLEEP is not
420
 
   NULL then the function will not sleep but will set *TIMESTAMP_SLEEP
421
 
   to TRUE if a sleep is required, and will not change
422
 
   *TIMESTAMP_SLEEP if no sleep is required.
 
505
   Set *TIMESTAMP_SLEEP to TRUE if a sleep is required; otherwise do not
 
506
   change *TIMESTAMP_SLEEP.  The output will be valid even if the function
 
507
   returns an error.
423
508
 
424
509
   If ALLOW_UNVER_OBSTRUCTIONS is TRUE, unversioned children of LOCAL_ABSPATH
425
510
   that obstruct items added from the repos are tolerated; if FALSE,
470
555
 
471
556
   If IGNORE_EXTERNALS is true, do no externals processing.
472
557
 
473
 
   If TIMESTAMP_SLEEP is NULL this function will sleep before
474
 
   returning to ensure timestamp integrity.  If TIMESTAMP_SLEEP is not
475
 
   NULL then the function will not sleep but will set *TIMESTAMP_SLEEP
476
 
   to TRUE if a sleep is required, and will not change *TIMESTAMP_SLEEP
477
 
   if no sleep is required.  If ALLOW_UNVER_OBSTRUCTIONS is TRUE,
 
558
   Set *TIMESTAMP_SLEEP to TRUE if a sleep is required; otherwise do not
 
559
   change *TIMESTAMP_SLEEP.  The output will be valid even if the function
 
560
   returns an error.
 
561
 
 
562
   If ALLOW_UNVER_OBSTRUCTIONS is TRUE,
478
563
   unversioned children of LOCAL_ABSPATH that obstruct items added from
479
564
   the repos are tolerated; if FALSE, these obstructions cause the checkout
480
565
   to fail.
499
584
   acquired and released if not held. Only switch as deeply as DEPTH
500
585
   indicates.
501
586
 
502
 
   If TIMESTAMP_SLEEP is NULL this function will sleep before
503
 
   returning to ensure timestamp integrity.  If TIMESTAMP_SLEEP is not
504
 
   NULL then the function will not sleep but will set *TIMESTAMP_SLEEP
505
 
   to TRUE if a sleep is required, and will not change
506
 
   *TIMESTAMP_SLEEP if no sleep is required.
 
587
   Set *TIMESTAMP_SLEEP to TRUE if a sleep is required; otherwise do not
 
588
   change *TIMESTAMP_SLEEP.  The output will be valid even if the function
 
589
   returns an error.
507
590
 
508
591
   If IGNORE_EXTERNALS is true, don't process externals.
509
592
 
533
616
                            apr_pool_t *pool);
534
617
 
535
618
/* ---------------------------------------------------------------- */
536
 
 
 
619
 
 
620
 
 
621
/*** Inheritable Properties ***/
 
622
 
 
623
/* Convert any svn_prop_inherited_item_t elements in INHERITED_PROPS which
 
624
   have repository root relative path PATH_OR_URL structure members to URLs
 
625
   using REPOS_ROOT_URL.  Changes to the contents of INHERITED_PROPS are
 
626
   allocated in RESULT_POOL.  SCRATCH_POOL is used for temporary
 
627
   allocations. */
 
628
svn_error_t *
 
629
svn_client__iprop_relpaths_to_urls(apr_array_header_t *inherited_props,
 
630
                                   const char *repos_root_url,
 
631
                                   apr_pool_t *result_pool,
 
632
                                   apr_pool_t *scratch_pool);
 
633
 
 
634
/* Fetch the inherited properties for the base of LOCAL_ABSPATH as well
 
635
   as any WC roots under LOCAL_ABSPATH (as limited by DEPTH) using
 
636
   RA_SESSION.  Store the results in *WCROOT_IPROPS, a hash mapping
 
637
   const char * absolute working copy paths to depth-first ordered arrays
 
638
   of svn_prop_inherited_item_t * structures.
 
639
 
 
640
   Any svn_prop_inherited_item_t->path_or_url members returned in
 
641
   *WCROOT_IPROPS are repository relative paths.
 
642
 
 
643
   If LOCAL_ABSPATH has no base then do nothing.
 
644
 
 
645
   RA_SESSION should be an open RA session pointing at the URL of PATH,
 
646
   or NULL, in which case this function will use its own temporary session.
 
647
 
 
648
   Allocate *WCROOT_IPROPS in RESULT_POOL, use SCRATCH_POOL for temporary
 
649
   allocations.
 
650
 
 
651
   If one or more of the paths are not available in the repository at the
 
652
   specified revision, these paths will not be added to the hashtable.
 
653
*/
 
654
svn_error_t *
 
655
svn_client__get_inheritable_props(apr_hash_t **wcroot_iprops,
 
656
                                  const char *local_abspath,
 
657
                                  svn_revnum_t revision,
 
658
                                  svn_depth_t depth,
 
659
                                  svn_ra_session_t *ra_session,
 
660
                                  svn_client_ctx_t *ctx,
 
661
                                  apr_pool_t *result_pool,
 
662
                                  apr_pool_t *scratch_pool);
 
663
 
 
664
/* ---------------------------------------------------------------- */
 
665
 
 
666
 
537
667
/*** Editor for repository diff ***/
538
668
 
539
669
/* Create an editor for a pure repository comparison, i.e. comparing one
540
670
   repository version against the other.
541
671
 
542
 
   TARGET is a working-copy path, the base of the hierarchy to be
543
 
   compared.  It corresponds to the URL opened in RA_SESSION below.
544
 
 
545
 
   WC_CTX is a context for the working copy and should be NULL for
546
 
   operations that do not involve a working copy.
547
 
 
548
 
   DIFF_CMD/DIFF_CMD_BATON represent the callback and callback argument that
549
 
   implement the file comparison function
 
672
   DIFF_CALLBACKS/DIFF_CMD_BATON represent the callback that implements
 
673
   the comparison.
550
674
 
551
675
   DEPTH is the depth to recurse.
552
676
 
553
 
   DRY_RUN is set if this is a dry-run merge. It is not relevant for diff.
554
 
 
555
 
   RA_SESSION defines the additional RA session for requesting file
556
 
   contents.
557
 
 
558
 
   REVISION is the start revision in the comparison.
559
 
 
560
 
   If NOTIFY_FUNC is non-null, invoke it with NOTIFY_BATON for each
561
 
   file and directory operated on during the edit.
562
 
 
563
 
   EDITOR/EDIT_BATON return the newly created editor and baton. */
 
677
   RA_SESSION is an RA session through which this editor may fetch
 
678
   properties, file contents and directory listings of the 'old' side of the
 
679
   diff. It is a separate RA session from the one through which this editor
 
680
   is being driven. REVISION is the revision number of the 'old' side of
 
681
   the diff.
 
682
 
 
683
   If TEXT_DELTAS is FALSE, then do not expect text deltas from the edit
 
684
   drive, nor send the 'before' and 'after' texts to the diff callbacks;
 
685
   instead, send empty files to the diff callbacks if there was a change.
 
686
   This must be FALSE if the edit producer is not sending text deltas,
 
687
   otherwise the file content checksum comparisons will fail.
 
688
 
 
689
   EDITOR/EDIT_BATON return the newly created editor and baton.
 
690
 
 
691
   @since New in 1.8.
 
692
   */
564
693
svn_error_t *
565
 
svn_client__get_diff_editor(const svn_delta_editor_t **editor,
566
 
                            void **edit_baton,
567
 
                            svn_wc_context_t *wc_ctx,
568
 
                            const char *target,
569
 
                            svn_depth_t depth,
570
 
                            svn_ra_session_t *ra_session,
571
 
                            svn_revnum_t revision,
572
 
                            svn_boolean_t walk_deleted_dirs,
573
 
                            svn_boolean_t dry_run,
574
 
                            const svn_wc_diff_callbacks4_t *diff_callbacks,
575
 
                            void *diff_cmd_baton,
576
 
                            svn_cancel_func_t cancel_func,
577
 
                            void *cancel_baton,
578
 
                            svn_wc_notify_func2_t notify_func,
579
 
                            void *notify_baton,
580
 
                            apr_pool_t *result_pool,
581
 
                            apr_pool_t *scratch_pool);
582
 
 
 
694
svn_client__get_diff_editor2(const svn_delta_editor_t **editor,
 
695
                             void **edit_baton,
 
696
                             svn_ra_session_t *ra_session,
 
697
                             svn_depth_t depth,
 
698
                             svn_revnum_t revision,
 
699
                             svn_boolean_t text_deltas,
 
700
                             const svn_diff_tree_processor_t *processor,
 
701
                             svn_cancel_func_t cancel_func,
 
702
                             void *cancel_baton,
 
703
                             apr_pool_t *result_pool);
583
704
 
584
705
/* ---------------------------------------------------------------- */
585
 
 
 
706
 
 
707
 
586
708
/*** Editor for diff summary ***/
587
709
 
588
 
/* Create an editor for a repository diff summary, i.e. comparing one
589
 
   repository version against the other and only providing information
590
 
   about the changed items without the text deltas.
591
 
 
592
 
   TARGET is the target of the diff, relative to the root of the edit.
593
 
 
594
 
   SUMMARIZE_FUNC is called with SUMMARIZE_BATON as parameter by the
595
 
   created svn_delta_editor_t for each changed item.
596
 
 
597
 
   See svn_client__get_diff_editor() for a description of the other
598
 
   parameters.  */
599
 
svn_error_t *
600
 
svn_client__get_diff_summarize_editor(const char *target,
601
 
                                      svn_client_diff_summarize_func_t
602
 
                                      summarize_func,
603
 
                                      void *summarize_baton,
604
 
                                      svn_ra_session_t *ra_session,
605
 
                                      svn_revnum_t revision,
606
 
                                      svn_cancel_func_t cancel_func,
607
 
                                      void *cancel_baton,
608
 
                                      const svn_delta_editor_t **editor,
609
 
                                      void **edit_baton,
610
 
                                      apr_pool_t *pool);
611
 
 
612
710
/* Set *CALLBACKS and *CALLBACK_BATON to a set of diff callbacks that will
613
711
   report a diff summary, i.e. only providing information about the changed
614
712
   items without the text deltas.
623
721
                        svn_wc_diff_callbacks4_t **callbacks,
624
722
                        void **callback_baton,
625
723
                        const char *target,
 
724
                        svn_boolean_t reversed,
626
725
                        svn_client_diff_summarize_func_t summarize_func,
627
726
                        void *summarize_baton,
628
727
                        apr_pool_t *pool);
629
728
 
630
729
/* ---------------------------------------------------------------- */
631
 
 
 
730
 
 
731
 
632
732
/*** Copy Stuff ***/
633
733
 
634
734
/* This structure is used to associate a specific copy or move SRC with a
669
769
} svn_client__copy_pair_t;
670
770
 
671
771
/* ---------------------------------------------------------------- */
672
 
 
 
772
 
 
773
 
673
774
/*** Commit Stuff ***/
674
775
 
675
776
/* WARNING: This is all new, untested, un-peer-reviewed conceptual
773
874
   as specified by DEPTH; the behavior is the same as that described
774
875
   for svn_client_commit4().
775
876
 
 
877
   If DEPTH_EMPTY_START is >= 0, all targets after index DEPTH_EMPTY_START
 
878
   in TARGETS are handled as having svn_depth_empty.
 
879
 
776
880
   If JUST_LOCKED is TRUE, treat unmodified items with lock tokens as
777
881
   commit candidates.
778
882
 
789
893
                                 apr_hash_t **lock_tokens,
790
894
                                 const char *base_dir_abspath,
791
895
                                 const apr_array_header_t *targets,
 
896
                                 int depth_empty_start,
792
897
                                 svn_depth_t depth,
793
898
                                 svn_boolean_t just_locked,
794
899
                                 const apr_array_header_t *changelists,
817
922
                                  apr_pool_t *scratch_pool);
818
923
 
819
924
/* A qsort()-compatible sort routine for sorting an array of
820
 
   svn_client_commit_item_t's by their URL member. */
 
925
   svn_client_commit_item_t *'s by their URL member. */
821
926
int svn_client__sort_commit_item_urls(const void *a, const void *b);
822
927
 
823
928
 
835
940
                                  apr_pool_t *pool);
836
941
 
837
942
 
 
943
/* Like svn_ra_stat() on the ra session root, but with a compatibility
 
944
   hack for pre-1.2 svnserve that don't support this api. */
 
945
svn_error_t *
 
946
svn_client__ra_stat_compatible(svn_ra_session_t *ra_session,
 
947
                               svn_revnum_t rev,
 
948
                               svn_dirent_t **dirent_p,
 
949
                               apr_uint32_t dirent_fields,
 
950
                               svn_client_ctx_t *ctx,
 
951
                               apr_pool_t *result_pool);
 
952
 
 
953
 
838
954
/* Commit the items in the COMMIT_ITEMS array using EDITOR/EDIT_BATON
839
955
   to describe the committed local mods.  Prior to this call,
840
956
   COMMIT_ITEMS should have been run through (and BASE_URL generated
848
964
   NOTIFY_PATH_PREFIX will be passed to CTX->notify_func2() as the
849
965
   common absolute path prefix of the committed paths.  It can be NULL.
850
966
 
851
 
   If MD5_CHECKSUMS is not NULL, set *MD5_CHECKSUMS to a hash containing,
 
967
   If SHA1_CHECKSUMS is not NULL, set *SHA1_CHECKSUMS to a hash containing,
852
968
   for each file transmitted, a mapping from the commit-item's (const
853
 
   char *) path to the (const svn_checksum_t *) MD5 checksum of its new text
854
 
   base.  Similarly for SHA1_CHECKSUMS.
 
969
   char *) path to the (const svn_checksum_t *) SHA1 checksum of its new text
 
970
   base.
855
971
 
856
972
   Use RESULT_POOL for all allocating the resulting hashes and SCRATCH_POOL
857
973
   for temporary allocations.
862
978
                      const svn_delta_editor_t *editor,
863
979
                      void *edit_baton,
864
980
                      const char *notify_path_prefix,
865
 
                      apr_hash_t **md5_checksums,
866
981
                      apr_hash_t **sha1_checksums,
867
982
                      svn_client_ctx_t *ctx,
868
983
                      apr_pool_t *result_pool,
869
984
                      apr_pool_t *scratch_pool);
870
985
 
871
986
 
872
 
 
 
987
 
 
988
 
873
989
/*** Externals (Modules) ***/
874
990
 
875
991
/* Handle changes to the svn:externals property described by EXTERNALS_NEW,
896
1012
 
897
1013
   Pass NOTIFY_FUNC with NOTIFY_BATON along to svn_client_checkout().
898
1014
 
899
 
   *TIMESTAMP_SLEEP will be set TRUE if a sleep is required to ensure
900
 
   timestamp integrity, *TIMESTAMP_SLEEP will be unchanged if no sleep
901
 
   is required.
 
1015
   Set *TIMESTAMP_SLEEP to TRUE if a sleep is required; otherwise do not
 
1016
   change *TIMESTAMP_SLEEP.  The output will be valid even if the function
 
1017
   returns an error.
902
1018
 
903
1019
   Use POOL for temporary allocation. */
904
1020
svn_error_t *
927
1043
 
928
1044
   NATIVE_EOL is the value passed as NATIVE_EOL when exporting.
929
1045
 
930
 
   *TIMESTAMP_SLEEP will be set TRUE if a sleep is required to ensure
931
 
   timestamp integrity, *TIMESTAMP_SLEEP will be unchanged if no sleep
932
 
   is required.
933
 
 
934
1046
   Use POOL for temporary allocation. */
935
1047
svn_error_t *
936
1048
svn_client__export_externals(apr_hash_t *externals,
940
1052
                             svn_depth_t requested_depth,
941
1053
                             const char *native_eol,
942
1054
                             svn_boolean_t ignore_keywords,
943
 
                             svn_boolean_t *timestamp_sleep,
944
1055
                             svn_client_ctx_t *ctx,
945
1056
                             apr_pool_t *pool);
946
1057
 
947
 
 
948
 
/* Perform status operations on each external in EXTERNAL_MAP, a const char *
949
 
   local_abspath of all externals mapping to the const char* defining_abspath.
950
 
   All other options are the same as those passed to svn_client_status().
951
 
 
952
 
   If ANCHOR_ABSPATH and ANCHOR-RELPATH are not null, use them to provide
953
 
   properly formatted relative paths
954
 
 */
955
 
svn_error_t *
956
 
svn_client__do_external_status(svn_client_ctx_t *ctx,
957
 
                               apr_hash_t *external_map,
958
 
                               svn_depth_t depth,
959
 
                               svn_boolean_t get_all,
960
 
                               svn_boolean_t update,
961
 
                               svn_boolean_t no_ignore,
962
 
                               const char *anchor_abspath,
963
 
                               const char *anchor_relpath,
964
 
                               svn_client_status_func_t status_func,
965
 
                               void *status_baton,
966
 
                               apr_pool_t *scratch_pool);
967
 
 
968
 
/* Baton type for svn_wc__external_info_gatherer(). */
969
 
typedef struct svn_client__external_func_baton_t
970
 
{
971
 
  apr_hash_t *externals_old;  /* Hash of old externals property values,
972
 
                                 or NULL if the caller doesn't care. */
973
 
  apr_hash_t *externals_new;  /* Hash of new externals property values,
974
 
                                 or NULL if the caller doesn't care. */
975
 
  apr_hash_t *ambient_depths; /* Hash of ambient depth values, or NULL
976
 
                                 if the caller doesn't care. */
977
 
  apr_pool_t *result_pool;    /* Pool to use for all stored values. */
978
 
 
979
 
} svn_client__external_func_baton_t;
980
 
 
981
 
 
982
 
/* This function gets invoked whenever external changes are encountered.
983
 
   This implements the `svn_wc_external_update_t' interface, and can
984
 
   be used with an svn_client__external_func_baton_t BATON to gather
985
 
   information about changes to externals definitions. */
986
 
svn_error_t *
987
 
svn_client__external_info_gatherer(void *baton,
988
 
                                   const char *local_abspath,
989
 
                                   const svn_string_t *old_val,
990
 
                                   const svn_string_t *new_val,
991
 
                                   svn_depth_t depth,
992
 
                                   apr_pool_t *scratch_pool);
993
 
 
994
1058
/* Baton for svn_client__dirent_fetcher */
995
1059
struct svn_client__dirent_fetcher_baton_t
996
1060
{
1055
1119
                                  apr_pool_t *result_pool,
1056
1120
                                  apr_pool_t *scratch_pool);
1057
1121
 
1058
 
 
1059
 
/* Return true if KIND is a revision kind that is dependent on the working
1060
 
 * copy. Otherwise, return false. */
1061
 
#define SVN_CLIENT__REVKIND_NEEDS_WC(kind)                                 \
1062
 
  ((kind) == svn_opt_revision_base ||                                      \
1063
 
   (kind) == svn_opt_revision_previous ||                                  \
1064
 
   (kind) == svn_opt_revision_working ||                                   \
1065
 
   (kind) == svn_opt_revision_committed)                                   \
1066
 
 
1067
 
/* Return true if KIND is a revision kind that the WC can supply without
1068
 
 * contacting the repository. Otherwise, return false. */
1069
 
#define SVN_CLIENT__REVKIND_IS_LOCAL_TO_WC(kind)                           \
1070
 
  ((kind) == svn_opt_revision_base ||                                      \
1071
 
   (kind) == svn_opt_revision_working ||                                   \
1072
 
   (kind) == svn_opt_revision_committed)
 
1122
/* Return a set of callbacks to use with the Ev2 shims. */
 
1123
svn_delta_shim_callbacks_t *
 
1124
svn_client__get_shim_callbacks(svn_wc_context_t *wc_ctx,
 
1125
                               apr_hash_t *relpath_map,
 
1126
                               apr_pool_t *result_pool);
1073
1127
 
1074
1128
/* Return REVISION unless its kind is 'unspecified' in which case return
1075
1129
 * a pointer to a statically allocated revision structure of kind 'head'
1091
1145
svn_cl__rev_default_to_peg(const svn_opt_revision_t *revision,
1092
1146
                           const svn_opt_revision_t *peg_revision);
1093
1147
 
1094
 
 
 
1148
/* Call the conflict resolver callback in CTX for each conflict recorded
 
1149
 * in CONFLICTED_PATHS (const char *abspath keys; ignored values).  If
 
1150
 * CONFLICTS_REMAIN is not NULL, then set *CONFLICTS_REMAIN to true if
 
1151
 * there are any conflicts among CONFLICTED_PATHS remaining unresolved
 
1152
 * at the end of this operation, else set it to false.
 
1153
 */
 
1154
svn_error_t *
 
1155
svn_client__resolve_conflicts(svn_boolean_t *conflicts_remain,
 
1156
                              apr_hash_t *conflicted_paths,
 
1157
                              svn_client_ctx_t *ctx,
 
1158
                              apr_pool_t *scratch_pool);
 
1159
 
 
1160
 
 
1161
 
1095
1162
#ifdef __cplusplus
1096
1163
}
1097
1164
#endif /* __cplusplus */