Alien-SVN

 view release on metacpan or  search on metacpan

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

  svn_wc_notify_status_external,

  /** Committing a modification. */
  svn_wc_notify_commit_modified,

  /** Committing an addition. */
  svn_wc_notify_commit_added,

  /** Committing a deletion. */
  svn_wc_notify_commit_deleted,

  /** Committing a replacement. */
  svn_wc_notify_commit_replaced,

  /** Transmitting post-fix text-delta data for a file. */
  svn_wc_notify_commit_postfix_txdelta,

  /** Processed a single revision's blame. */
  svn_wc_notify_blame_revision,

  /** Locking a path. @since New in 1.2. */
  svn_wc_notify_locked,

  /** Unlocking a path. @since New in 1.2. */
  svn_wc_notify_unlocked,

  /** Failed to lock a path. @since New in 1.2. */
  svn_wc_notify_failed_lock,

  /** Failed to unlock a path. @since New in 1.2. */
  svn_wc_notify_failed_unlock,

  /** Tried adding a path that already exists. @since New in 1.5. */
  svn_wc_notify_exists,

  /** Changelist name set. @since New in 1.5. */
  svn_wc_notify_changelist_set,

  /** Changelist name cleared. @since New in 1.5. */
  svn_wc_notify_changelist_clear,

  /** Warn user that a path has moved from one changelist to another.
      @since New in 1.5.
      @deprecated As of 1.7, separate clear and set notifications are sent. */
  svn_wc_notify_changelist_moved,

  /** A merge operation (to path) has begun.  See #svn_wc_notify_t.merge_range.
      @since New in 1.5. */
  svn_wc_notify_merge_begin,

  /** A merge operation (to path) from a foreign repository has begun.
      See #svn_wc_notify_t.merge_range.  @since New in 1.5. */
  svn_wc_notify_foreign_merge_begin,

  /** Replace notification. @since New in 1.5. */
  svn_wc_notify_update_replace,

  /** Property added. @since New in 1.6. */
  svn_wc_notify_property_added,

  /** Property updated. @since New in 1.6. */
  svn_wc_notify_property_modified,

  /** Property deleted. @since New in 1.6. */
  svn_wc_notify_property_deleted,

  /** Nonexistent property deleted. @since New in 1.6. */
  svn_wc_notify_property_deleted_nonexistent,

  /** Revprop set. @since New in 1.6. */
  svn_wc_notify_revprop_set,

  /** Revprop deleted. @since New in 1.6. */
  svn_wc_notify_revprop_deleted,

  /** The last notification in a merge. @since New in 1.6. */
  svn_wc_notify_merge_completed,

  /** The path is a tree-conflict victim of the intended action (*not*
   * a persistent tree-conflict from an earlier operation, but *this*
   * operation caused the tree-conflict). @since New in 1.6. */
  svn_wc_notify_tree_conflict,

  /** The path is a subdirectory referenced in an externals definition
   * which is unable to be operated on.  @since New in 1.6. */
  svn_wc_notify_failed_external,

  /** Starting an update operation.  @since New in 1.7. */
  svn_wc_notify_update_started,

  /** An update tried to add a file or directory at a path where
   * a separate working copy was found.  @since New in 1.7. */
  svn_wc_notify_update_skip_obstruction,

  /** An explicit update tried to update a file or directory that
   * doesn't live in the repository and can't be brought in.
   * @since New in 1.7. */
  svn_wc_notify_update_skip_working_only,

  /** An update tried to update a file or directory to which access could
   * not be obtained. @since New in 1.7. */
  svn_wc_notify_update_skip_access_denied,

  /** An update operation removed an external working copy.
   * @since New in 1.7. */
  svn_wc_notify_update_external_removed,

  /** A node below an existing node was added during update.
   * @since New in 1.7. */
  svn_wc_notify_update_shadowed_add,

  /** A node below an existing node was updated during update.
   * @since New in 1.7. */
  svn_wc_notify_update_shadowed_update,

  /** A node below an existing node was deleted during update.
   * @since New in 1.7. */
  svn_wc_notify_update_shadowed_delete,

  /** The mergeinfo on path was updated.  @since New in 1.7. */
  svn_wc_notify_merge_record_info,

  /** A working copy directory was upgraded to the latest format.
   * @since New in 1.7. */
  svn_wc_notify_upgraded_path,

  /** Mergeinfo describing a merge was recorded.
   * @since New in 1.7. */
  svn_wc_notify_merge_record_info_begin,

  /** Mergeinfo was removed due to elision.
   * @since New in 1.7. */
  svn_wc_notify_merge_elide_info,

  /** A file in the working copy was patched.
   * @since New in 1.7. */
  svn_wc_notify_patch,

  /** A hunk from a patch was applied.
   * @since New in 1.7. */
  svn_wc_notify_patch_applied_hunk,

  /** A hunk from a patch was rejected.
   * @since New in 1.7. */
  svn_wc_notify_patch_rejected_hunk,

  /** A hunk from a patch was found to already be applied.
   * @since New in 1.7. */
  svn_wc_notify_patch_hunk_already_applied,

  /** Committing a non-overwriting copy (path is the target of the
   * copy, not the source).
   * @since New in 1.7. */
  svn_wc_notify_commit_copied,

  /** Committing an overwriting (replace) copy (path is the target of
   * the copy, not the source).
   * @since New in 1.7. */
  svn_wc_notify_commit_copied_replaced,

  /** The server has instructed the client to follow a URL
   * redirection.
   * @since New in 1.7. */
  svn_wc_notify_url_redirect,

  /** The operation was attempted on a path which doesn't exist.
   * @since New in 1.7. */
  svn_wc_notify_path_nonexistent,

  /** Removing a path by excluding it.
   * @since New in 1.7. */
  svn_wc_notify_exclude,

  /** Operation failed because the node remains in conflict
   * @since New in 1.7. */
  svn_wc_notify_failed_conflict,

  /** Operation failed because an added node is missing
   * @since New in 1.7. */
  svn_wc_notify_failed_missing,

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

} svn_wc_entry_t;


/** How an entries file's owner dir is named in the entries file.
 * @deprecated Provided for backward compatibility with the 1.6 API. */
#define SVN_WC_ENTRY_THIS_DIR  ""


/** Set @a *entry to an entry for @a path, allocated in the access baton pool.
 * If @a show_hidden is TRUE, return the entry even if it's in 'excluded',
 * 'deleted' or 'absent' state. Excluded entries are those with their depth
 * set to #svn_depth_exclude. If @a path is not under revision control, or
 * if entry is hidden, not scheduled for re-addition, and @a show_hidden is @c
 * FALSE, then set @a *entry to @c NULL.
 *
 * @a *entry should not be modified, since doing so modifies the entries
 * cache in @a adm_access without changing the entries file on disk.
 *
 * If @a path is not a directory then @a adm_access must be an access baton
 * for the parent directory of @a path.  To avoid needing to know whether
 * @a path is a directory or not, if @a path is a directory @a adm_access
 * can still be an access baton for the parent of @a path so long as the
 * access baton for @a path itself is in the same access baton set.
 *
 * @a path can be relative or absolute but must share the same base used
 * to open @a adm_access.
 *
 * Note that it is possible for @a path to be absent from disk but still
 * under revision control; and conversely, it is possible for @a path to
 * be present, but not under revision control.
 *
 * Use @a pool only for local processing.
 *
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_entry(const svn_wc_entry_t **entry,
             const char *path,
             svn_wc_adm_access_t *adm_access,
             svn_boolean_t show_hidden,
             apr_pool_t *pool);


/** Parse the `entries' file for @a adm_access and return a hash @a entries,
 * whose keys are (<tt>const char *</tt>) entry names and values are
 * (<tt>svn_wc_entry_t *</tt>).  The hash @a entries, and its keys and
 * values, are allocated from the pool used to open the @a adm_access
 * baton (that's how the entries caching works).  @a pool is used for
 * transient allocations.
 *
 * Entries that are in a 'excluded', 'deleted' or 'absent' state (and not
 * scheduled for re-addition) are not returned in the hash, unless
 * @a show_hidden is TRUE. Excluded entries are those with their depth set to
 * #svn_depth_exclude.
 *
 * @par Important:
 * The @a entries hash is the entries cache in @a adm_access
 * and so usually the hash itself, the keys and the values should be treated
 * as read-only.  If any of these are modified then it is the caller's
 * responsibility to ensure that the entries file on disk is updated.  Treat
 * the hash values as type (<tt>const svn_wc_entry_t *</tt>) if you wish to
 * avoid accidental modification.  Modifying the schedule member is a
 * particularly bad idea, as the entries writing process relies on having
 * access to the original schedule.  Use a duplicate entry to modify the
 * schedule.
 *
 * @par Important:
 * Only the entry structures representing files and
 * #SVN_WC_ENTRY_THIS_DIR contain complete information.  The entry
 * structures representing subdirs have only the `kind' and `state'
 * fields filled in.  If you want info on a subdir, you must use this
 * routine to open its @a path and read the #SVN_WC_ENTRY_THIS_DIR
 * structure, or call svn_wc_entry() on its @a path.
 *
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_entries_read(apr_hash_t **entries,
                    svn_wc_adm_access_t *adm_access,
                    svn_boolean_t show_hidden,
                    apr_pool_t *pool);


/** Return a duplicate of @a entry, allocated in @a pool.  No part of the new
 * entry will be shared with @a entry.
 *
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
SVN_DEPRECATED
svn_wc_entry_t *
svn_wc_entry_dup(const svn_wc_entry_t *entry,
                 apr_pool_t *pool);

/** @} */


/**
 * This struct contains information about a working copy node.
 *
 * @note Fields may be added to the end of this structure in future
 * versions.  Therefore, users shouldn't allocate structures of this
 * type, to preserve binary compatibility.
 *
 * @since New in 1.7.
 */
typedef struct svn_wc_info_t
{
  /** The schedule of this item
   * ### Do we still need schedule? */
  svn_wc_schedule_t schedule;

  /** If copied, the URL from which the copy was made, else @c NULL. */
  const char *copyfrom_url;

  /** If copied, the revision from which the copy was made,
   * else #SVN_INVALID_REVNUM. */
  svn_revnum_t copyfrom_rev;

  /** The checksum of the node, if it is a file. */

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN



/** Given @a local_abspath in a dir under version control, decide if it is
 * in a state of conflict; return the answers in @a *text_conflicted_p, @a
 * *prop_conflicted_p, and @a *tree_conflicted_p.  If one or two of the
 * answers are uninteresting, simply pass @c NULL pointers for those.
 *
 * If @a local_abspath is unversioned or does not exist, return
 * #SVN_ERR_WC_PATH_NOT_FOUND.
 *
 * If the @a local_abspath has corresponding text conflict files (with suffix
 * .mine, .theirs, etc.) that cannot be found, assume that the text conflict
 * has been resolved by the user and return @c FALSE in @a
 * *text_conflicted_p.
 *
 * Similarly, if a property conflicts file (.prej suffix) is said to exist,
 * but it cannot be found, assume that the property conflicts have been
 * resolved by the user and return @c FALSE in @a *prop_conflicted_p.
 *
 * @a *tree_conflicted_p can't be auto-resolved in this fashion.  An
 * explicit `resolved' is needed.
 *
 * @since New in 1.7.
 */
svn_error_t *
svn_wc_conflicted_p3(svn_boolean_t *text_conflicted_p,
                     svn_boolean_t *prop_conflicted_p,
                     svn_boolean_t *tree_conflicted_p,
                     svn_wc_context_t *wc_ctx,
                     const char *local_abspath,
                     apr_pool_t *scratch_pool);

/** Similar to svn_wc_conflicted_p3(), but with a path/adm_access parameter
 * pair in place of a wc_ctx/local_abspath pair.
 *
 * @since New in 1.6.
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_conflicted_p2(svn_boolean_t *text_conflicted_p,
                     svn_boolean_t *prop_conflicted_p,
                     svn_boolean_t *tree_conflicted_p,
                     const char *path,
                     svn_wc_adm_access_t *adm_access,
                     apr_pool_t *pool);

/** Given a @a dir_path under version control, decide if one of its entries
 * (@a entry) is in a state of conflict; return the answers in @a
 * text_conflicted_p and @a prop_conflicted_p. These pointers must not be
 * null.
 *
 * If the @a entry mentions that text conflict files (with suffix .mine,
 * .theirs, etc.) exist, but they cannot be found, assume the text conflict
 * has been resolved by the user and return FALSE in @a *text_conflicted_p.
 *
 * Similarly, if the @a entry mentions that a property conflicts file (.prej
 * suffix) exists, but it cannot be found, assume the property conflicts
 * have been resolved by the user and return FALSE in @a *prop_conflicted_p.
 *
 * The @a entry is not updated.
 *
 * @deprecated Provided for backward compatibility with the 1.5 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_conflicted_p(svn_boolean_t *text_conflicted_p,
                    svn_boolean_t *prop_conflicted_p,
                    const char *dir_path,
                    const svn_wc_entry_t *entry,
                    apr_pool_t *pool);


/** Set @a *url and @a *rev to the ancestor URL and revision for @a path,
 * allocating in @a pool.  @a adm_access must be an access baton for @a path.
 *
 * If @a url or @a rev is NULL, then ignore it (just don't return the
 * corresponding information).
 *
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_get_ancestry(char **url,
                    svn_revnum_t *rev,
                    const char *path,
                    svn_wc_adm_access_t *adm_access,
                    apr_pool_t *pool);


/** A callback vtable invoked by the generic entry-walker function.
 * @since New in 1.5.
 */
typedef struct svn_wc_entry_callbacks2_t
{
  /** An @a entry was found at @a path. */
  svn_error_t *(*found_entry)(const char *path,
                              const svn_wc_entry_t *entry,
                              void *walk_baton,
                              apr_pool_t *pool);

  /** Handle the error @a err encountered while processing @a path.
   * Wrap or squelch @a err as desired, and return an #svn_error_t
   * *, or #SVN_NO_ERROR.
   */
  svn_error_t *(*handle_error)(const char *path,
                               svn_error_t *err,
                               void *walk_baton,
                               apr_pool_t *pool);

} svn_wc_entry_callbacks2_t;

/** @deprecated Provided for backward compatibility with the 1.4 API. */
typedef struct svn_wc_entry_callbacks_t
{
  /** An @a entry was found at @a path. */
  svn_error_t *(*found_entry)(const char *path,
                              const svn_wc_entry_t *entry,
                              void *walk_baton,
                              apr_pool_t *pool);

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

 *
 * @note Even though this API uses a #svn_wc_context_t, it accepts a
 * (possibly) relative path and returns a (possibly) relative path in
 * @a *anchor.  The reason being that the outputs are generally used to
 * open access batons, and such opening currently requires relative paths.
 * In the long-run, I expect this API to be removed from 1.7, due to the
 * remove of access batons, but for the time being, the #svn_wc_context_t
 * parameter allows us to avoid opening a duplicate database, just for this
 * function.
 *
 * @since New in 1.7.
 */
svn_error_t *
svn_wc_get_actual_target2(const char **anchor,
                          const char **target,
                          svn_wc_context_t *wc_ctx,
                          const char *path,
                          apr_pool_t *result_pool,
                          apr_pool_t *scratch_pool);


/** Similar to svn_wc_get_actual_target2(), but without the wc context, and
 * with a absolute path.
 *
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_get_actual_target(const char *path,
                         const char **anchor,
                         const char **target,
                         apr_pool_t *pool);


/**
 * @defgroup svn_wc_update_switch Update and switch (update-like functionality)
 * @{
 */

/**
 * A simple callback type to wrap svn_ra_get_file();  see that
 * docstring for more information.
 *
 * This technique allows libsvn_client to 'wrap' svn_ra_get_file() and
 * pass it down into libsvn_wc functions, thus allowing the WC layer
 * to legally call the RA function via (blind) callback.
 *
 * @since New in 1.5
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
typedef svn_error_t *(*svn_wc_get_file_t)(void *baton,
                                          const char *path,
                                          svn_revnum_t revision,
                                          svn_stream_t *stream,
                                          svn_revnum_t *fetched_rev,
                                          apr_hash_t **props,
                                          apr_pool_t *pool);

/**
 * A simple callback type to wrap svn_ra_get_dir2() for avoiding issue #3569,
 * where a directory is updated to a revision without some of its children
 * recorded in the working copy. A future update won't bring these files in
 * because the repository assumes they are already there.
 *
 * We really only need the names of the dirents for a not-present marking,
 * but we also store the node-kind if we receive one.
 *
 * @a *dirents should be set to a hash mapping <tt>const char *</tt> child
 * names, to <tt>const svn_dirent_t *</tt> instances.
 *
 * @since New in 1.7.
 */
typedef svn_error_t *(*svn_wc_dirents_func_t)(void *baton,
                                              apr_hash_t **dirents,
                                              const char *repos_root_url,
                                              const char *repos_relpath,
                                              apr_pool_t *result_pool,
                                              apr_pool_t *scratch_pool);


/**
 * DEPRECATED -- please use APIs from svn_client.h
 *
 * ---
 *
 * Set @a *editor and @a *edit_baton to an editor and baton for updating a
 * working copy.
 *
 * @a anchor_abspath is a local working copy directory, with a fully recursive
 * write lock in @a wc_ctx, which will be used as the root of our editor.
 *
 * @a target_basename is the entry in @a anchor_abspath that will actually be
 * updated, or the empty string if all of @a anchor_abspath should be updated.
 *
 * The editor invokes @a notify_func with @a notify_baton as the update
 * progresses, if @a notify_func is non-NULL.
 *
 * If @a cancel_func is non-NULL, the editor will invoke @a cancel_func with
 * @a cancel_baton as the update progresses to see if it should continue.
 *
 * If @a conflict_func is non-NULL, then invoke it with @a
 * conflict_baton whenever a conflict is encountered, giving the
 * callback a chance to resolve the conflict before the editor takes
 * more drastic measures (such as marking a file conflicted, or
 * bailing out of the update).
 *
 * If @a external_func is non-NULL, then invoke it with @a external_baton
 * whenever external changes are encountered, giving the callback a chance
 * to store the external information for processing.
 *
 * If @a diff3_cmd is non-NULL, then use it as the diff3 command for
 * any merging; otherwise, use the built-in merge code.
 *
 * @a preserved_exts is an array of filename patterns which, when
 * matched against the extensions of versioned files, determine for
 * which such files any related generated conflict files will preserve
 * the original file's extension as their own.  If a file's extension
 * does not match any of the patterns in @a preserved_exts (which is
 * certainly the case if @a preserved_exts is @c NULL or empty),
 * generated conflict files will carry Subversion's custom extensions.
 *
 * @a target_revision is a pointer to a revision location which, after
 * successful completion of the drive of this editor, will be
 * populated with the revision to which the working copy was updated.
 *
 * If @a use_commit_times is TRUE, then all edited/added files will
 * have their working timestamp set to the last-committed-time.  If
 * FALSE, the working files will be touched with the 'now' time.
 *
 * If @a allow_unver_obstructions is TRUE, then allow unversioned
 * obstructions when adding a path.
 *
 * If @a adds_as_modification is TRUE, a local addition at the same path
 * as an incoming addition of the same node kind results in a normal node
 * with a possible local modification, instead of a tree conflict.
 *
 * If @a depth is #svn_depth_infinity, update fully recursively.
 * Else if it is #svn_depth_immediates, update the uppermost
 * directory, its file entries, and the presence or absence of
 * subdirectories (but do not descend into the subdirectories).
 * Else if it is #svn_depth_files, update the uppermost directory
 * and its immediate file entries, but not subdirectories.
 * Else if it is #svn_depth_empty, update exactly the uppermost
 * target, and don't touch its entries.
 *
 * If @a depth_is_sticky is set and @a depth is not
 * #svn_depth_unknown, then in addition to updating PATHS, also set
 * their sticky ambient depth value to @a depth.
 *
 * If @a server_performs_filtering is TRUE, assume that the server handles
 * the ambient depth filtering, so this doesn't have to be handled in the
 * editor.
 *
 * If @a clean_checkout is TRUE, assume that we are checking out into an
 * empty directory, and so bypass a number of conflict checks that are
 * unnecessary in this case.
 *
 * If @a fetch_dirents_func is not NULL, the update editor may call this
 * callback, when asked to perform a depth restricted update. It will do this
 * before returning the editor to allow using the primary ra session for this.
 *
 * @since New in 1.7.
 * @deprecated Provided for backward compatibility with the 1.7 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_get_update_editor4(const svn_delta_editor_t **editor,
                          void **edit_baton,
                          svn_revnum_t *target_revision,
                          svn_wc_context_t *wc_ctx,
                          const char *anchor_abspath,
                          const char *target_basename,
                          svn_boolean_t use_commit_times,
                          svn_depth_t depth,
                          svn_boolean_t depth_is_sticky,
                          svn_boolean_t allow_unver_obstructions,
                          svn_boolean_t adds_as_modification,
                          svn_boolean_t server_performs_filtering,
                          svn_boolean_t clean_checkout,
                          const char *diff3_cmd,
                          const apr_array_header_t *preserved_exts,
                          svn_wc_dirents_func_t fetch_dirents_func,
                          void *fetch_dirents_baton,
                          svn_wc_conflict_resolver_func2_t conflict_func,

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

 * is @c FALSE the merge will cause @a target_abspath to be modified, when
 * it is @c TRUE the merge will be carried out to determine the result but
 * @a target_abspath will not be modified.
 *
 * If @a diff3_cmd is non-NULL, then use it as the diff3 command for
 * any merging; otherwise, use the built-in merge code.  If @a
 * merge_options is non-NULL, either pass its elements to @a diff3_cmd or
 * parse it and use as options to the internal merge code (see
 * svn_diff_file_options_parse()).  @a merge_options must contain
 * <tt>const char *</tt> elements.
 *
 * If @a merge_props_state is non-NULL, merge @a prop_diff into the
 * working properties before merging the text.  (If @a merge_props_state
 * is NULL, do not merge any property changes; in this case, @a prop_diff
 * is only used to help determine the text merge result.)  Handle any
 * conflicts as described for svn_wc_merge_props3(), with the parameters
 * @a dry_run, @a conflict_func and @a conflict_baton.  Return the
 * outcome of the property merge in @a *merge_props_state.
 *
 * The outcome of the text merge is returned in @a *merge_content_outcome. If
 * there is a conflict and @a dry_run is @c FALSE, then attempt to call @a
 * conflict_func with @a conflict_baton (if non-NULL).  If the
 * conflict callback cannot resolve the conflict, then:
 *
 *   * Put conflict markers around the conflicting regions in
 *     @a target_abspath, labeled with @a left_label, @a right_label, and
 *     @a target_label.  (If any of these labels are @c NULL, default
 *     values will be used.)
 *
 *   * Copy @a left_abspath, @a right_abspath, and the original @a
 *     target_abspath to unique names in the same directory as @a
 *     target_abspath, ending with the suffixes ".LEFT_LABEL", ".RIGHT_LABEL",
 *     and ".TARGET_LABEL" respectively.
 *
 *   * Mark @a target_abspath as "text-conflicted", and track the above
 *     mentioned backup files as well.
 *
 *   * If @a left_version and/or @a right_version are not NULL, provide
 *     these values to the conflict handler and track these while the conflict
 *     exists.
 *
 * Binary case:
 *
 *  If @a target_abspath is a binary file, then no merging is attempted,
 *  the merge is deemed to be a conflict.  If @a dry_run is @c FALSE the
 *  working @a target_abspath is untouched, and copies of @a left_abspath and
 *  @a right_abspath are created next to it using @a left_label and
 *  @a right_label. @a target_abspath is marked as "text-conflicted", and
 *  begins tracking the two backup files and the version information.
 *
 * If @a dry_run is @c TRUE no files are changed.  The outcome of the merge
 * is returned in @a *merge_content_outcome.
 * ### (and what about @a *merge_props_state?)
 *
 * ### BH: Two kinds of outcome is not how it should be.
 *
 * ### For text, we report the outcome as 'merged' if there was some
 *     incoming change that we dealt with (even if we decided to no-op?)
 *     but the callers then convert this outcome into a notification
 *     of 'merged' only if there was already a local modification;
 *     otherwise they notify it as simply 'updated'.  But for props
 *     we report a notify state of 'merged' here if there was an
 *     incoming change regardless of the local-mod state.  Inconsistent.
 *
 * Use @a scratch_pool for any temporary allocation.
 *
 * @since New in 1.8.
 */
svn_error_t *
svn_wc_merge5(enum svn_wc_merge_outcome_t *merge_content_outcome,
              enum svn_wc_notify_state_t *merge_props_state,
              svn_wc_context_t *wc_ctx,
              const char *left_abspath,
              const char *right_abspath,
              const char *target_abspath,
              const char *left_label,
              const char *right_label,
              const char *target_label,
              const svn_wc_conflict_version_t *left_version,
              const svn_wc_conflict_version_t *right_version,
              svn_boolean_t dry_run,
              const char *diff3_cmd,
              const apr_array_header_t *merge_options,
              apr_hash_t *original_props,
              const apr_array_header_t *prop_diff,
              svn_wc_conflict_resolver_func2_t conflict_func,
              void *conflict_baton,
              svn_cancel_func_t cancel_func,
              void *cancel_baton,
              apr_pool_t *scratch_pool);

/** Similar to svn_wc_merge5() but with @a merge_props_state and @a
 * original_props always passed as NULL.
 *
 * Unlike svn_wc_merge5(), this function doesn't merge property
 * changes.  Callers of this function must first use
 * svn_wc_merge_props3() to get this functionality.
 *
 * @since New in 1.7.
 * @deprecated Provided for backwards compatibility with the 1.7 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_merge4(enum svn_wc_merge_outcome_t *merge_outcome,
              svn_wc_context_t *wc_ctx,
              const char *left_abspath,
              const char *right_abspath,
              const char *target_abspath,
              const char *left_label,
              const char *right_label,
              const char *target_label,
              const svn_wc_conflict_version_t *left_version,
              const svn_wc_conflict_version_t *right_version,
              svn_boolean_t dry_run,
              const char *diff3_cmd,
              const apr_array_header_t *merge_options,
              const apr_array_header_t *prop_diff,
              svn_wc_conflict_resolver_func2_t conflict_func,
              void *conflict_baton,
              svn_cancel_func_t cancel_func,
              void *cancel_baton,

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

                    const char *path,
                    svn_wc_adm_access_t *adm_access,
                    apr_hash_t *baseprops,
                    const apr_array_header_t *propchanges,
                    svn_boolean_t base_merge,
                    svn_boolean_t dry_run,
                    svn_wc_conflict_resolver_func_t conflict_func,
                    void *conflict_baton,
                    apr_pool_t *pool);


/**
 * Same as svn_wc_merge_props2(), but with a @a conflict_func (and
 * baton) of NULL.
 *
 * @since New in 1.3. The base_merge option is not supported since 1.7.
 * @deprecated Provided for backward compatibility with the 1.4 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_merge_props(svn_wc_notify_state_t *state,
                   const char *path,
                   svn_wc_adm_access_t *adm_access,
                   apr_hash_t *baseprops,
                   const apr_array_header_t *propchanges,
                   svn_boolean_t base_merge,
                   svn_boolean_t dry_run,
                   apr_pool_t *pool);


/**
 * Similar to svn_wc_merge_props(), but no baseprops are given.
 * Instead, it's assumed that the incoming propchanges are based
 * against the working copy's own baseprops.  While this assumption is
 * correct for 'svn update', it's incorrect for 'svn merge', and can
 * cause flawed behavior.  (See issue #2035.)
 *
 * @since The base_merge option is not supported since 1.7.
 * @deprecated Provided for backward compatibility with the 1.2 API.
 * Replaced by svn_wc_merge_props().
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_merge_prop_diffs(svn_wc_notify_state_t *state,
                        const char *path,
                        svn_wc_adm_access_t *adm_access,
                        const apr_array_header_t *propchanges,
                        svn_boolean_t base_merge,
                        svn_boolean_t dry_run,
                        apr_pool_t *pool);

/** @} */


/** Given a @a path to a wc file, return in @a *contents a readonly stream to
 * the pristine contents of the file that would serve as base content for the
 * next commit. That means:
 *
 * When there is no change in node history scheduled, i.e. when there are only
 * local text-mods, prop-mods or a delete, return the last checked-out or
 * updated-/switched-to contents of the file.
 *
 * If the file is simply added or replaced (no copy-/move-here involved),
 * set @a *contents to @c NULL.
 *
 * When the file has been locally copied-/moved-here, return the contents of
 * the copy/move source (even if the copy-/move-here replaces a locally
 * deleted file).
 *
 * If @a local_abspath refers to an unversioned or non-existing path, return
 * @c SVN_ERR_WC_PATH_NOT_FOUND. Use @a wc_ctx to access the working copy.
 * @a contents may not be @c NULL (unlike @a *contents).
 *
 * @since New in 1.7. */
svn_error_t *
svn_wc_get_pristine_contents2(svn_stream_t **contents,
                              svn_wc_context_t *wc_ctx,
                              const char *local_abspath,
                              apr_pool_t *result_pool,
                              apr_pool_t *scratch_pool);

/** Similar to svn_wc_get_pristine_contents2, but takes no working copy
 * context and a path that can be relative
 *
 * @since New in 1.6.
 * @deprecated Provided for backward compatibility with the 1.6 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_get_pristine_contents(svn_stream_t **contents,
                             const char *path,
                             apr_pool_t *result_pool,
                             apr_pool_t *scratch_pool);


/** Set @a *pristine_path to the path of the "normal" pristine text file for
 * the versioned file @a path.
 *
 * If @a path does not have a pristine text, set @a *pristine_path to a path where
 * nothing exists on disk (in a directory that does exist).
 *
 * @note: Before version 1.7, the behaviour in that case was to provide the
 * path where the pristine text *would be* if it were present.  The new
 * behaviour is intended to provide backward compatibility for callers that
 * open or test the provided path immediately, and not for callers that
 * store the path for later use.
 *
 * @deprecated Provided for backwards compatibility with the 1.5 API.
 * Callers should use svn_wc_get_pristine_contents() instead.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_get_pristine_copy_path(const char *path,
                              const char **pristine_path,
                              apr_pool_t *pool);


/**
 * Recurse from @a local_abspath, cleaning up unfinished log business.  Perform
 * any temporary allocations in @a scratch_pool.  Any working copy locks under
 * @a local_abspath will be taken over and then cleared by this function.



( run in 0.879 second using v1.01-cache-2.11-cpan-5623c5533a1 )