GME  13
svn_fs.h
Go to the documentation of this file.
00001 
00027 #ifndef SVN_FS_H
00028 #define SVN_FS_H
00029 
00030 #include <apr.h>
00031 #include <apr_pools.h>
00032 #include <apr_hash.h>
00033 #include <apr_tables.h>
00034 #include <apr_time.h>    /* for apr_time_t */
00035 
00036 #include "svn_types.h"
00037 #include "svn_string.h"
00038 #include "svn_delta.h"
00039 #include "svn_io.h"
00040 #include "svn_mergeinfo.h"
00041 #include "svn_checksum.h"
00042 
00043 
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif /* __cplusplus */
00047 
00048 
00054 const svn_version_t *
00055 svn_fs_version(void);
00056 
00062 /* Opening and creating filesystems.  */
00063 
00064 
00066 typedef struct svn_fs_t svn_fs_t;
00067 
00068 
00073 #define SVN_FS_CONFIG_BDB_TXN_NOSYNC            "bdb-txn-nosync"
00074 #define SVN_FS_CONFIG_BDB_LOG_AUTOREMOVE        "bdb-log-autoremove"
00075 
00080 #define SVN_FS_CONFIG_FSFS_CACHE_DELTAS         "fsfs-cache-deltas"
00081 
00086 #define SVN_FS_CONFIG_FSFS_CACHE_FULLTEXTS      "fsfs-cache-fulltexts"
00087 
00096 #define SVN_FS_CONFIG_FSFS_CACHE_REVPROPS       "fsfs-cache-revprops"
00097 
00111 #define SVN_FS_CONFIG_FSFS_CACHE_NS             "fsfs-cache-namespace"
00112 
00113 /* Note to maintainers: if you add further SVN_FS_CONFIG_FSFS_CACHE_* knobs,
00114    update fs_fs.c:verify_as_revision_before_current_plus_plus(). */
00115 
00116 /* See also svn_fs_type(). */
00118 #define SVN_FS_CONFIG_FS_TYPE                   "fs-type"
00119 
00120 #define SVN_FS_TYPE_BDB                         "bdb"
00121 
00122 #define SVN_FS_TYPE_FSFS                        "fsfs"
00123 
00129 #define SVN_FS_CONFIG_PRE_1_4_COMPATIBLE        "pre-1.4-compatible"
00130 
00136 #define SVN_FS_CONFIG_PRE_1_5_COMPATIBLE        "pre-1.5-compatible"
00137 
00143 #define SVN_FS_CONFIG_PRE_1_6_COMPATIBLE        "pre-1.6-compatible"
00144 
00150 #define SVN_FS_CONFIG_PRE_1_8_COMPATIBLE        "pre-1.8-compatible"
00151 
00176 svn_error_t *
00177 svn_fs_initialize(apr_pool_t *pool);
00178 
00179 
00187 typedef void (*svn_fs_warning_callback_t)(void *baton, svn_error_t *err);
00188 
00189 
00199 void
00200 svn_fs_set_warning_func(svn_fs_t *fs,
00201                         svn_fs_warning_callback_t warning,
00202                         void *warning_baton);
00203 
00204 
00205 
00234 svn_error_t *
00235 svn_fs_create(svn_fs_t **fs_p,
00236               const char *path,
00237               apr_hash_t *fs_config,
00238               apr_pool_t *pool);
00239 
00261 svn_error_t *
00262 svn_fs_open(svn_fs_t **fs_p,
00263             const char *path,
00264             apr_hash_t *fs_config,
00265             apr_pool_t *pool);
00266 
00279 svn_error_t *
00280 svn_fs_upgrade(const char *path,
00281                apr_pool_t *pool);
00282 
00292 typedef void (*svn_fs_progress_notify_func_t)(svn_revnum_t revision,
00293                                               void *baton,
00294                                               apr_pool_t *pool);
00295 
00311 svn_error_t *
00312 svn_fs_type(const char **fs_type,
00313             const char *path,
00314             apr_pool_t *pool);
00315 
00323 const char *
00324 svn_fs_path(svn_fs_t *fs,
00325             apr_pool_t *pool);
00326 
00337 apr_hash_t *
00338 svn_fs_config(svn_fs_t *fs,
00339               apr_pool_t *pool);
00340 
00350 svn_error_t *
00351 svn_fs_delete_fs(const char *path,
00352                  apr_pool_t *pool);
00353 
00370 svn_error_t *
00371 svn_fs_hotcopy2(const char *src_path,
00372                 const char *dest_path,
00373                 svn_boolean_t clean,
00374                 svn_boolean_t incremental,
00375                 svn_cancel_func_t cancel_func,
00376                 void *cancel_baton,
00377                 apr_pool_t *scratch_pool);
00378 
00386 SVN_DEPRECATED
00387 svn_error_t *
00388 svn_fs_hotcopy(const char *src_path,
00389                const char *dest_path,
00390                svn_boolean_t clean,
00391                apr_pool_t *pool);
00392 
00428 svn_error_t *
00429 svn_fs_recover(const char *path,
00430                svn_cancel_func_t cancel_func,
00431                void *cancel_baton,
00432                apr_pool_t *pool);
00433 
00434 
00440 typedef svn_error_t *(*svn_fs_freeze_func_t)(void *baton, apr_pool_t *pool);
00441 
00454 svn_error_t *
00455 svn_fs_freeze(svn_fs_t *fs,
00456               svn_fs_freeze_func_t freeze_func,
00457               void *freeze_baton,
00458               apr_pool_t *pool);
00459 
00460 
00495 SVN_DEPRECATED
00496 svn_error_t *
00497 svn_fs_set_berkeley_errcall(svn_fs_t *fs,
00498                             void (*handler)(const char *errpfx,
00499                                             char *msg));
00500 
00514 svn_error_t *
00515 svn_fs_berkeley_logfiles(apr_array_header_t **logfiles,
00516                          const char *path,
00517                          svn_boolean_t only_unused,
00518                          apr_pool_t *pool);
00519 
00520 
00534 SVN_DEPRECATED
00535 svn_fs_t *
00536 svn_fs_new(apr_hash_t *fs_config,
00537            apr_pool_t *pool);
00538 
00540 SVN_DEPRECATED
00541 svn_error_t *
00542 svn_fs_create_berkeley(svn_fs_t *fs,
00543                        const char *path);
00544 
00546 SVN_DEPRECATED
00547 svn_error_t *
00548 svn_fs_open_berkeley(svn_fs_t *fs,
00549                      const char *path);
00550 
00552 SVN_DEPRECATED
00553 const char *
00554 svn_fs_berkeley_path(svn_fs_t *fs,
00555                      apr_pool_t *pool);
00556 
00558 SVN_DEPRECATED
00559 svn_error_t *
00560 svn_fs_delete_berkeley(const char *path,
00561                        apr_pool_t *pool);
00562 
00564 SVN_DEPRECATED
00565 svn_error_t *
00566 svn_fs_hotcopy_berkeley(const char *src_path,
00567                         const char *dest_path,
00568                         svn_boolean_t clean_logs,
00569                         apr_pool_t *pool);
00570 
00572 SVN_DEPRECATED
00573 svn_error_t *
00574 svn_fs_berkeley_recover(const char *path,
00575                         apr_pool_t *pool);
00580 
00599 typedef struct svn_fs_access_t svn_fs_access_t;
00600 
00601 
00608 svn_error_t *
00609 svn_fs_create_access(svn_fs_access_t **access_ctx,
00610                      const char *username,
00611                      apr_pool_t *pool);
00612 
00613 
00622 svn_error_t *
00623 svn_fs_set_access(svn_fs_t *fs,
00624                   svn_fs_access_t *access_ctx);
00625 
00626 
00630 svn_error_t *
00631 svn_fs_get_access(svn_fs_access_t **access_ctx,
00632                   svn_fs_t *fs);
00633 
00634 
00638 svn_error_t *
00639 svn_fs_access_get_username(const char **username,
00640                            svn_fs_access_t *access_ctx);
00641 
00642 
00650 svn_error_t *
00651 svn_fs_access_add_lock_token2(svn_fs_access_t *access_ctx,
00652                               const char *path,
00653                               const char *token);
00654 
00660 SVN_DEPRECATED
00661 svn_error_t *
00662 svn_fs_access_add_lock_token(svn_fs_access_t *access_ctx,
00663                              const char *token);
00664 
00667 
00714 typedef struct svn_fs_id_t svn_fs_id_t;
00715 
00716 
00720 int
00721 svn_fs_compare_ids(const svn_fs_id_t *a,
00722                    const svn_fs_id_t *b);
00723 
00724 
00725 
00729 svn_boolean_t
00730 svn_fs_check_related(const svn_fs_id_t *id1,
00731                      const svn_fs_id_t *id2);
00732 
00733 
00741 SVN_DEPRECATED
00742 svn_fs_id_t *
00743 svn_fs_parse_id(const char *data,
00744                 apr_size_t len,
00745                 apr_pool_t *pool);
00746 
00747 
00752 svn_string_t *
00753 svn_fs_unparse_id(const svn_fs_id_t *id,
00754                   apr_pool_t *pool);
00755 
00758 
00855 typedef struct svn_fs_txn_t svn_fs_txn_t;
00856 
00857 
00868 #define SVN_FS_TXN_CHECK_OOD                     0x00001
00869 
00873 #define SVN_FS_TXN_CHECK_LOCKS                   0x00002
00874 
00895 svn_error_t *
00896 svn_fs_begin_txn2(svn_fs_txn_t **txn_p,
00897                   svn_fs_t *fs,
00898                   svn_revnum_t rev,
00899                   apr_uint32_t flags,
00900                   apr_pool_t *pool);
00901 
00902 
00908 SVN_DEPRECATED
00909 svn_error_t *
00910 svn_fs_begin_txn(svn_fs_txn_t **txn_p,
00911                  svn_fs_t *fs,
00912                  svn_revnum_t rev,
00913                  apr_pool_t *pool);
00914 
00915 
00916 
00966 svn_error_t *
00967 svn_fs_commit_txn(const char **conflict_p,
00968                   svn_revnum_t *new_rev,
00969                   svn_fs_txn_t *txn,
00970                   apr_pool_t *pool);
00971 
00972 
00983 svn_error_t *
00984 svn_fs_abort_txn(svn_fs_txn_t *txn,
00985                  apr_pool_t *pool);
00986 
00987 
00994 svn_error_t *
00995 svn_fs_purge_txn(svn_fs_t *fs,
00996                  const char *txn_id,
00997                  apr_pool_t *pool);
00998 
00999 
01003 svn_error_t *
01004 svn_fs_txn_name(const char **name_p,
01005                 svn_fs_txn_t *txn,
01006                 apr_pool_t *pool);
01007 
01009 svn_revnum_t
01010 svn_fs_txn_base_revision(svn_fs_txn_t *txn);
01011 
01012 
01013 
01023 svn_error_t *
01024 svn_fs_open_txn(svn_fs_txn_t **txn,
01025                 svn_fs_t *fs,
01026                 const char *name,
01027                 apr_pool_t *pool);
01028 
01029 
01034 svn_error_t *
01035 svn_fs_list_transactions(apr_array_header_t **names_p,
01036                          svn_fs_t *fs,
01037                          apr_pool_t *pool);
01038 
01039 /* Transaction properties */
01040 
01045 svn_error_t *
01046 svn_fs_txn_prop(svn_string_t **value_p,
01047                 svn_fs_txn_t *txn,
01048                 const char *propname,
01049                 apr_pool_t *pool);
01050 
01051 
01056 svn_error_t *
01057 svn_fs_txn_proplist(apr_hash_t **table_p,
01058                     svn_fs_txn_t *txn,
01059                     apr_pool_t *pool);
01060 
01061 
01067 svn_error_t *
01068 svn_fs_change_txn_prop(svn_fs_txn_t *txn,
01069                        const char *name,
01070                        const svn_string_t *value,
01071                        apr_pool_t *pool);
01072 
01073 
01084 svn_error_t *
01085 svn_fs_change_txn_props(svn_fs_txn_t *txn,
01086                         const apr_array_header_t *props,
01087                         apr_pool_t *pool);
01088 
01091 
01104 typedef struct svn_fs_root_t svn_fs_root_t;
01105 
01106 
01111 svn_error_t *
01112 svn_fs_revision_root(svn_fs_root_t **root_p,
01113                      svn_fs_t *fs,
01114                      svn_revnum_t rev,
01115                      apr_pool_t *pool);
01116 
01117 
01122 svn_error_t *
01123 svn_fs_txn_root(svn_fs_root_t **root_p,
01124                 svn_fs_txn_t *txn,
01125                 apr_pool_t *pool);
01126 
01127 
01133 void
01134 svn_fs_close_root(svn_fs_root_t *root);
01135 
01136 
01138 svn_fs_t *
01139 svn_fs_root_fs(svn_fs_root_t *root);
01140 
01141 
01143 svn_boolean_t
01144 svn_fs_is_txn_root(svn_fs_root_t *root);
01145 
01147 svn_boolean_t
01148 svn_fs_is_revision_root(svn_fs_root_t *root);
01149 
01150 
01154 const char *
01155 svn_fs_txn_root_name(svn_fs_root_t *root,
01156                      apr_pool_t *pool);
01157 
01164 svn_revnum_t
01165 svn_fs_txn_root_base_revision(svn_fs_root_t *root);
01166 
01170 svn_revnum_t
01171 svn_fs_revision_root_revision(svn_fs_root_t *root);
01172 
01175 
01203 
01205 typedef enum svn_fs_path_change_kind_t
01206 {
01208   svn_fs_path_change_modify = 0,
01209 
01211   svn_fs_path_change_add,
01212 
01214   svn_fs_path_change_delete,
01215 
01217   svn_fs_path_change_replace,
01218 
01220   svn_fs_path_change_reset
01221 
01222 } svn_fs_path_change_kind_t;
01223 
01231 typedef struct svn_fs_path_change2_t
01232 {
01234   const svn_fs_id_t *node_rev_id;
01235 
01237   svn_fs_path_change_kind_t change_kind;
01238 
01240   svn_boolean_t text_mod;
01241 
01243   svn_boolean_t prop_mod;
01244 
01247   svn_node_kind_t node_kind;
01248 
01251   svn_boolean_t copyfrom_known;
01252   svn_revnum_t copyfrom_rev;
01253   const char *copyfrom_path;
01254 
01255   /* NOTE! Please update svn_fs_path_change2_create() when adding new
01256      fields here. */
01257 } svn_fs_path_change2_t;
01258 
01259 
01266 typedef struct svn_fs_path_change_t
01267 {
01269   const svn_fs_id_t *node_rev_id;
01270 
01272   svn_fs_path_change_kind_t change_kind;
01273 
01275   svn_boolean_t text_mod;
01276 
01278   svn_boolean_t prop_mod;
01279 
01280 } svn_fs_path_change_t;
01281 
01292 svn_fs_path_change2_t *
01293 svn_fs_path_change2_create(const svn_fs_id_t *node_rev_id,
01294                            svn_fs_path_change_kind_t change_kind,
01295                            apr_pool_t *pool);
01296 
01313 svn_error_t *
01314 svn_fs_paths_changed2(apr_hash_t **changed_paths2_p,
01315                       svn_fs_root_t *root,
01316                       apr_pool_t *pool);
01317 
01318 
01324 SVN_DEPRECATED
01325 svn_error_t *
01326 svn_fs_paths_changed(apr_hash_t **changed_paths_p,
01327                      svn_fs_root_t *root,
01328                      apr_pool_t *pool);
01329 
01332 
01333 /* Operations appropriate to all kinds of nodes.  */
01334 
01339 svn_error_t *
01340 svn_fs_check_path(svn_node_kind_t *kind_p,
01341                   svn_fs_root_t *root,
01342                   const char *path,
01343                   apr_pool_t *pool);
01344 
01345 
01347 typedef struct svn_fs_history_t svn_fs_history_t;
01348 
01349 
01354 svn_error_t *
01355 svn_fs_node_history(svn_fs_history_t **history_p,
01356                     svn_fs_root_t *root,
01357                     const char *path,
01358                     apr_pool_t *pool);
01359 
01360 
01387 svn_error_t *
01388 svn_fs_history_prev(svn_fs_history_t **prev_history_p,
01389                     svn_fs_history_t *history,
01390                     svn_boolean_t cross_copies,
01391                     apr_pool_t *pool);
01392 
01393 
01398 svn_error_t *
01399 svn_fs_history_location(const char **path,
01400                         svn_revnum_t *revision,
01401                         svn_fs_history_t *history,
01402                         apr_pool_t *pool);
01403 
01404 
01408 svn_error_t *
01409 svn_fs_is_dir(svn_boolean_t *is_dir,
01410               svn_fs_root_t *root,
01411               const char *path,
01412               apr_pool_t *pool);
01413 
01414 
01418 svn_error_t *
01419 svn_fs_is_file(svn_boolean_t *is_file,
01420                svn_fs_root_t *root,
01421                const char *path,
01422                apr_pool_t *pool);
01423 
01424 
01434 svn_error_t *
01435 svn_fs_node_id(const svn_fs_id_t **id_p,
01436                svn_fs_root_t *root,
01437                const char *path,
01438                apr_pool_t *pool);
01439 
01447 svn_error_t *
01448 svn_fs_node_created_rev(svn_revnum_t *revision,
01449                         svn_fs_root_t *root,
01450                         const char *path,
01451                         apr_pool_t *pool);
01452 
01462 svn_error_t *
01463 svn_fs_node_origin_rev(svn_revnum_t *revision,
01464                        svn_fs_root_t *root,
01465                        const char *path,
01466                        apr_pool_t *pool);
01467 
01474 svn_error_t *
01475 svn_fs_node_created_path(const char **created_path,
01476                          svn_fs_root_t *root,
01477                          const char *path,
01478                          apr_pool_t *pool);
01479 
01480 
01485 svn_error_t *
01486 svn_fs_node_prop(svn_string_t **value_p,
01487                  svn_fs_root_t *root,
01488                  const char *path,
01489                  const char *propname,
01490                  apr_pool_t *pool);
01491 
01492 
01498 svn_error_t *
01499 svn_fs_node_proplist(apr_hash_t **table_p,
01500                      svn_fs_root_t *root,
01501                      const char *path,
01502                      apr_pool_t *pool);
01503 
01504 
01514 svn_error_t *
01515 svn_fs_change_node_prop(svn_fs_root_t *root,
01516                         const char *path,
01517                         const char *name,
01518                         const svn_string_t *value,
01519                         apr_pool_t *pool);
01520 
01521 
01529 svn_error_t *
01530 svn_fs_props_changed(svn_boolean_t *changed_p,
01531                      svn_fs_root_t *root1,
01532                      const char *path1,
01533                      svn_fs_root_t *root2,
01534                      const char *path2,
01535                      apr_pool_t *pool);
01536 
01537 
01582 svn_error_t *
01583 svn_fs_copied_from(svn_revnum_t *rev_p,
01584                    const char **path_p,
01585                    svn_fs_root_t *root,
01586                    const char *path,
01587                    apr_pool_t *pool);
01588 
01589 
01605 svn_error_t *
01606 svn_fs_closest_copy(svn_fs_root_t **root_p,
01607                     const char **path_p,
01608                     svn_fs_root_t *root,
01609                     const char *path,
01610                     apr_pool_t *pool);
01611 
01612 
01646 svn_error_t *
01647 svn_fs_get_mergeinfo2(svn_mergeinfo_catalog_t *catalog,
01648                       svn_fs_root_t *root,
01649                       const apr_array_header_t *paths,
01650                       svn_mergeinfo_inheritance_t inherit,
01651                       svn_boolean_t include_descendants,
01652                       svn_boolean_t adjust_inherited_mergeinfo,
01653                       apr_pool_t *result_pool,
01654                       apr_pool_t *scratch_pool);
01655 
01662 SVN_DEPRECATED
01663 svn_error_t *
01664 svn_fs_get_mergeinfo(svn_mergeinfo_catalog_t *catalog,
01665                      svn_fs_root_t *root,
01666                      const apr_array_header_t *paths,
01667                      svn_mergeinfo_inheritance_t inherit,
01668                      svn_boolean_t include_descendants,
01669                      apr_pool_t *pool);
01670 
01698 svn_error_t *
01699 svn_fs_merge(const char **conflict_p,
01700              svn_fs_root_t *source_root,
01701              const char *source_path,
01702              svn_fs_root_t *target_root,
01703              const char *target_path,
01704              svn_fs_root_t *ancestor_root,
01705              const char *ancestor_path,
01706              apr_pool_t *pool);
01707 
01708 
01709 
01710 /* Directories.  */
01711 
01712 
01714 typedef struct svn_fs_dirent_t
01715 {
01716 
01718   const char *name;
01719 
01721   const svn_fs_id_t *id;
01722 
01724   svn_node_kind_t kind;
01725 
01726 } svn_fs_dirent_t;
01727 
01728 
01735 svn_error_t *
01736 svn_fs_dir_entries(apr_hash_t **entries_p,
01737                    svn_fs_root_t *root,
01738                    const char *path,
01739                    apr_pool_t *pool);
01740 
01741 
01748 svn_error_t *
01749 svn_fs_make_dir(svn_fs_root_t *root,
01750                 const char *path,
01751                 apr_pool_t *pool);
01752 
01753 
01766 svn_error_t *
01767 svn_fs_delete(svn_fs_root_t *root,
01768               const char *path,
01769               apr_pool_t *pool);
01770 
01771 
01793 svn_error_t *
01794 svn_fs_copy(svn_fs_root_t *from_root,
01795             const char *from_path,
01796             svn_fs_root_t *to_root,
01797             const char *to_path,
01798             apr_pool_t *pool);
01799 
01800 
01809 svn_error_t *
01810 svn_fs_revision_link(svn_fs_root_t *from_root,
01811                      svn_fs_root_t *to_root,
01812                      const char *path,
01813                      apr_pool_t *pool);
01814 
01815 /* Files.  */
01816 
01820 svn_error_t *
01821 svn_fs_file_length(svn_filesize_t *length_p,
01822                    svn_fs_root_t *root,
01823                    const char *path,
01824                    apr_pool_t *pool);
01825 
01826 
01860 svn_error_t *
01861 svn_fs_file_checksum(svn_checksum_t **checksum,
01862                      svn_checksum_kind_t kind,
01863                      svn_fs_root_t *root,
01864                      const char *path,
01865                      svn_boolean_t force,
01866                      apr_pool_t *pool);
01867 
01875 SVN_DEPRECATED
01876 svn_error_t *
01877 svn_fs_file_md5_checksum(unsigned char digest[],
01878                          svn_fs_root_t *root,
01879                          const char *path,
01880                          apr_pool_t *pool);
01881 
01882 
01898 svn_error_t *
01899 svn_fs_file_contents(svn_stream_t **contents,
01900                      svn_fs_root_t *root,
01901                      const char *path,
01902                      apr_pool_t *pool);
01903 
01913 typedef svn_error_t *
01914 (*svn_fs_process_contents_func_t)(const unsigned char *contents,
01915                                   apr_size_t len,
01916                                   void *baton,
01917                                   apr_pool_t *scratch_pool);
01918 
01934 svn_error_t *
01935 svn_fs_try_process_file_contents(svn_boolean_t *success,
01936                                  svn_fs_root_t *root,
01937                                  const char *path,
01938                                  svn_fs_process_contents_func_t processor,
01939                                  void* baton,
01940                                  apr_pool_t *pool);
01941 
01948 svn_error_t *
01949 svn_fs_make_file(svn_fs_root_t *root,
01950                  const char *path,
01951                  apr_pool_t *pool);
01952 
01953 
01988 svn_error_t *
01989 svn_fs_apply_textdelta(svn_txdelta_window_handler_t *contents_p,
01990                        void **contents_baton_p,
01991                        svn_fs_root_t *root,
01992                        const char *path,
01993                        const char *base_checksum,
01994                        const char *result_checksum,
01995                        apr_pool_t *pool);
01996 
01997 
02024 svn_error_t *
02025 svn_fs_apply_text(svn_stream_t **contents_p,
02026                   svn_fs_root_t *root,
02027                   const char *path,
02028                   const char *result_checksum,
02029                   apr_pool_t *pool);
02030 
02031 
02039 svn_error_t *
02040 svn_fs_contents_changed(svn_boolean_t *changed_p,
02041                         svn_fs_root_t *root1,
02042                         const char *path1,
02043                         svn_fs_root_t *root2,
02044                         const char *path2,
02045                         apr_pool_t *pool);
02046 
02047 
02048 
02049 /* Filesystem revisions.  */
02050 
02051 
02057 svn_error_t *
02058 svn_fs_youngest_rev(svn_revnum_t *youngest_p,
02059                     svn_fs_t *fs,
02060                     apr_pool_t *pool);
02061 
02062 
02071 svn_error_t *
02072 svn_fs_deltify_revision(svn_fs_t *fs,
02073                         svn_revnum_t revision,
02074                         apr_pool_t *pool);
02075 
02076 
02081 svn_error_t *
02082 svn_fs_revision_prop(svn_string_t **value_p,
02083                      svn_fs_t *fs,
02084                      svn_revnum_t rev,
02085                      const char *propname,
02086                      apr_pool_t *pool);
02087 
02088 
02094 svn_error_t *
02095 svn_fs_revision_proplist(apr_hash_t **table_p,
02096                          svn_fs_t *fs,
02097                          svn_revnum_t rev,
02098                          apr_pool_t *pool);
02099 
02100 
02122 svn_error_t *
02123 svn_fs_change_rev_prop2(svn_fs_t *fs,
02124                         svn_revnum_t rev,
02125                         const char *name,
02126                         const svn_string_t *const *old_value_p,
02127                         const svn_string_t *value,
02128                         apr_pool_t *pool);
02129 
02130 
02137 SVN_DEPRECATED
02138 svn_error_t *
02139 svn_fs_change_rev_prop(svn_fs_t *fs,
02140                        svn_revnum_t rev,
02141                        const char *name,
02142                        const svn_string_t *value,
02143                        apr_pool_t *pool);
02144 
02145 
02146 
02147 /* Computing deltas.  */
02148 
02149 
02159 svn_error_t *
02160 svn_fs_get_file_delta_stream(svn_txdelta_stream_t **stream_p,
02161                              svn_fs_root_t *source_root,
02162                              const char *source_path,
02163                              svn_fs_root_t *target_root,
02164                              const char *target_path,
02165                              apr_pool_t *pool);
02166 
02167 
02168 
02169 /* UUID manipulation. */
02170 
02173 svn_error_t *
02174 svn_fs_get_uuid(svn_fs_t *fs,
02175                 const char **uuid,
02176                 apr_pool_t *pool);
02177 
02178 
02183 svn_error_t *
02184 svn_fs_set_uuid(svn_fs_t *fs,
02185                 const char *uuid,
02186                 apr_pool_t *pool);
02187 
02188 
02189 /* Non-historical properties.  */
02190 
02191 /* [[Yes, do tell.]] */
02192 
02193 
02194 
02264 svn_error_t *
02265 svn_fs_lock(svn_lock_t **lock,
02266             svn_fs_t *fs,
02267             const char *path,
02268             const char *token,
02269             const char *comment,
02270             svn_boolean_t is_dav_comment,
02271             apr_time_t expiration_date,
02272             svn_revnum_t current_rev,
02273             svn_boolean_t steal_lock,
02274             apr_pool_t *pool);
02275 
02276 
02283 svn_error_t *
02284 svn_fs_generate_lock_token(const char **token,
02285                            svn_fs_t *fs,
02286                            apr_pool_t *pool);
02287 
02288 
02304 svn_error_t *
02305 svn_fs_unlock(svn_fs_t *fs,
02306               const char *path,
02307               const char *token,
02308               svn_boolean_t break_lock,
02309               apr_pool_t *pool);
02310 
02311 
02317 svn_error_t *
02318 svn_fs_get_lock(svn_lock_t **lock,
02319                 svn_fs_t *fs,
02320                 const char *path,
02321                 apr_pool_t *pool);
02322 
02323 
02330 typedef svn_error_t *(*svn_fs_get_locks_callback_t)(void *baton,
02331                                                     svn_lock_t *lock,
02332                                                     apr_pool_t *pool);
02333 
02334 
02355 svn_error_t *
02356 svn_fs_get_locks2(svn_fs_t *fs,
02357                   const char *path,
02358                   svn_depth_t depth,
02359                   svn_fs_get_locks_callback_t get_locks_func,
02360                   void *get_locks_baton,
02361                   apr_pool_t *pool);
02362 
02377 SVN_DEPRECATED
02378 svn_error_t *
02379 svn_fs_get_locks(svn_fs_t *fs,
02380                  const char *path,
02381                  svn_fs_get_locks_callback_t get_locks_func,
02382                  void *get_locks_baton,
02383                  apr_pool_t *pool);
02384 
02394 svn_error_t *
02395 svn_fs_print_modules(svn_stringbuf_t *output,
02396                      apr_pool_t *pool);
02397 
02398 
02400 typedef enum svn_fs_pack_notify_action_t
02401 {
02403   svn_fs_pack_notify_start = 0,
02404 
02406   svn_fs_pack_notify_end,
02407 
02410   svn_fs_pack_notify_start_revprop,
02411 
02414   svn_fs_pack_notify_end_revprop
02415 
02416 } svn_fs_pack_notify_action_t;
02417 
02423 typedef svn_error_t *(*svn_fs_pack_notify_t)(void *baton,
02424                                              apr_int64_t shard,
02425                                              svn_fs_pack_notify_action_t action,
02426                                              apr_pool_t *pool);
02427 
02434 svn_error_t *
02435 svn_fs_pack(const char *db_path,
02436             svn_fs_pack_notify_t notify_func,
02437             void *notify_baton,
02438             svn_cancel_func_t cancel_func,
02439             void *cancel_baton,
02440             apr_pool_t *pool);
02441 
02442 
02485 svn_error_t *
02486 svn_fs_verify(const char *path,
02487               apr_hash_t *fs_config,
02488               svn_revnum_t start,
02489               svn_revnum_t end,
02490               svn_fs_progress_notify_func_t notify_func,
02491               void *notify_baton,
02492               svn_cancel_func_t cancel_func,
02493               void *cancel_baton,
02494               apr_pool_t *scratch_pool);
02495 
02520 svn_error_t *
02521 svn_fs_verify_root(svn_fs_root_t *root,
02522                    apr_pool_t *scratch_pool);
02523 
02526 #ifdef __cplusplus
02527 }
02528 #endif /* __cplusplus */
02529 
02530 #endif /* SVN_FS_H */