Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/include/svn_fs.h view on Meta::CPAN
/** Return -1, 0, or 1 if node revisions @a a and @a b are respectively
* unrelated, equivalent, or otherwise related (part of the same node).
*/
int
svn_fs_compare_ids(const svn_fs_id_t *a,
const svn_fs_id_t *b);
/** Return TRUE if node revisions @a id1 and @a id2 are related (part of the
* same node), else return FALSE.
*/
svn_boolean_t
svn_fs_check_related(const svn_fs_id_t *id1,
const svn_fs_id_t *id2);
/**
* @note This function is not guaranteed to work with all filesystem
* types. There is currently no un-deprecated equivalent; contact the
* Subversion developers if you have a need for it.
*
* @deprecated Provided for backward compatibility with the 1.0 API.
*/
SVN_DEPRECATED
svn_fs_id_t *
svn_fs_parse_id(const char *data,
apr_size_t len,
apr_pool_t *pool);
/** Return a Subversion string containing the unparsed form of the
* node revision id @a id. Allocate the string containing the
* unparsed form in @a pool.
*/
svn_string_t *
svn_fs_unparse_id(const svn_fs_id_t *id,
apr_pool_t *pool);
/** @} */
/** Filesystem Transactions.
*
* To make a change to a Subversion filesystem:
* - Create a transaction object, using svn_fs_begin_txn().
* - Call svn_fs_txn_root(), to get the transaction's root directory.
* - Make whatever changes you like in that tree.
* - Commit the transaction, using svn_fs_commit_txn().
*
* The filesystem implementation guarantees that your commit will
* either:
* - succeed completely, so that all of the changes are committed to
* create a new revision of the filesystem, or
* - fail completely, leaving the filesystem unchanged.
*
* Until you commit the transaction, any changes you make are
* invisible. Only when your commit succeeds do they become visible
* to the outside world, as a new revision of the filesystem.
*
* If you begin a transaction, and then decide you don't want to make
* the change after all (say, because your net connection with the
* client disappeared before the change was complete), you can call
* svn_fs_abort_txn(), to cancel the entire transaction; this
* leaves the filesystem unchanged.
*
* The only way to change the contents of files or directories, or
* their properties, is by making a transaction and creating a new
* revision, as described above. Once a revision has been committed, it
* never changes again; the filesystem interface provides no means to
* go back and edit the contents of an old revision. Once history has
* been recorded, it is set in stone. Clients depend on this property
* to do updates and commits reliably; proxies depend on this property
* to cache changes accurately; and so on.
*
* There are two kinds of nodes in the filesystem: mutable, and
* immutable. Revisions in the filesystem consist entirely of
* immutable nodes, whose contents never change. A transaction in
* progress, which the user is still constructing, uses mutable nodes
* for those nodes which have been changed so far, and refers to
* immutable nodes from existing revisions for portions of the tree
* which haven't been changed yet in that transaction.
*
* Immutable nodes, as part of revisions, never refer to mutable
* nodes, which are part of uncommitted transactions. Mutable nodes
* may refer to immutable nodes, or other mutable nodes.
*
* Note that the terms "immutable" and "mutable" describe whether or
* not the nodes have been changed as part of a transaction --- not
* the permissions on the nodes they refer to. Even if you aren't
* authorized to modify the filesystem's root directory, you might be
* authorized to change some descendant of the root; doing so would
* create a new mutable copy of the root directory. Mutability refers
* to the role of the node: part of an existing revision, or part of a
* new one. This is independent of your authorization to make changes
* to a given node.
*
* Transactions are actually persistent objects, stored in the
* database. You can open a filesystem, begin a transaction, and
* close the filesystem, and then a separate process could open the
* filesystem, pick up the same transaction, and continue work on it.
* When a transaction is successfully committed, it is removed from
* the database.
*
* Every transaction is assigned a name. You can open a transaction
* by name, and resume work on it, or find out the name of a
* transaction you already have open. You can also list all the
* transactions currently present in the database.
*
* You may assign properties to transactions; these are name/value
* pairs. When you commit a transaction, all of its properties become
* unversioned revision properties of the new revision. (There is one
* exception: the svn:date property will be automatically set on new
* transactions to the date that the transaction was created, and will
* be overwritten when the transaction is committed by the current
* time; changes to a transaction's svn:date property will not affect
* its committed value.)
*
* Transaction names are guaranteed to contain only letters (upper-
* and lower-case), digits, `-', and `.', from the ASCII character
* set.
( run in 0.852 second using v1.01-cache-2.11-cpan-d7f47b0818f )