Subversion
|
Filesystem Nodes and Node-Revisions. More...
Typedefs | |
typedef enum svn_fs_node_relation_t | svn_fs_node_relation_t |
Defines the possible ways two arbitrary (root, path)-pairs may be related. More... | |
typedef struct svn_fs_id_t | svn_fs_id_t |
An object representing a node-revision id. More... | |
Enumerations | |
enum | svn_fs_node_relation_t { svn_fs_node_unrelated = 0, svn_fs_node_unchanged, svn_fs_node_common_ancestor } |
Defines the possible ways two arbitrary (root, path)-pairs may be related. More... | |
Functions | |
int | svn_fs_compare_ids (const svn_fs_id_t *a, const svn_fs_id_t *b) |
Return -1, 0, or 1 if node revisions a and b are respectively unrelated, equivalent, or otherwise related (part of the same node). More... | |
svn_boolean_t | svn_fs_check_related (const svn_fs_id_t *id1, const svn_fs_id_t *id2) |
Return TRUE if node revisions id1 and id2 are related (part of the same node), else return FALSE. More... | |
svn_fs_id_t * | svn_fs_parse_id (const char *data, apr_size_t len, apr_pool_t *pool) |
svn_string_t * | svn_fs_unparse_id (const svn_fs_id_t *id, apr_pool_t *pool) |
Return a Subversion string containing the unparsed form of the node revision id id. More... | |
Filesystem Nodes and Node-Revisions.
In a Subversion filesystem, a ‘node’ corresponds roughly to an ‘inode’ in a Unix filesystem:
A ‘node revision’ refers to one particular version of a node's contents, that existed over a specific period of time (one or more repository revisions). Changing a node's contents always creates a new revision of that node, which is to say creates a new ‘node revision’. Once created, a node revision's contents never change.
When we create a node, its initial contents are the initial revision of the node. As users make changes to the node over time, we create new revisions of that same node. When a user commits a change that deletes a file from the filesystem, we don't delete the node, or any revision of it — those stick around to allow us to recreate prior revisions of the filesystem. Instead, we just remove the reference to the node from the directory.
Each node revision is a part of exactly one node, and appears only once in the history of that node. It is uniquely identified by a node revision id, svn_fs_id_t. Its node revision id also identifies which node it is a part of.
typedef struct svn_fs_id_t svn_fs_id_t |
typedef enum svn_fs_node_relation_t svn_fs_node_relation_t |
Defines the possible ways two arbitrary (root, path)-pairs may be related.
Defines the possible ways two arbitrary (root, path)-pairs may be related.
svn_boolean_t svn_fs_check_related | ( | const svn_fs_id_t * | id1, |
const svn_fs_id_t * | id2 | ||
) |
Return TRUE if node revisions id1 and id2 are related (part of the same node), else return FALSE.
int svn_fs_compare_ids | ( | const svn_fs_id_t * | a, |
const svn_fs_id_t * | b | ||
) |
Return -1, 0, or 1 if node revisions a and b are respectively unrelated, equivalent, or otherwise related (part of the same node).
svn_fs_id_t* svn_fs_parse_id | ( | const char * | data, |
apr_size_t | len, | ||
apr_pool_t * | pool | ||
) |
svn_string_t* svn_fs_unparse_id | ( | const svn_fs_id_t * | id, |
apr_pool_t * | pool | ||
) |
Return a Subversion string containing the unparsed form of the node revision id id.
Allocate the string containing the unparsed form in pool.