Movatterモバイル変換


[0]ホーム

URL:


15 Versioning

A repository maysupportsimple versioning orfull versioning. Thissection describes the syntax and behavior of the Java API for bothtypes of versioning. Details on the underlying concepts, datastructures and node types can be found in §3.13VersioningModel.

Whether animplementation supports simple versioning can be determined byquerying the repository descriptor table with

.

Whether it supportsfull versioning can be determined by querying

.

A return value ofindicates support (see §24.2Repository Descriptors).

15.1 Creating a Versionable Node

A new versionable nodeis created by assigning it the appropriate mixin type:under simple versioning orunder full versioning. This may be done either to an existing node,through aor at node creation, through assignment of a primary type thatinherits from the mixin. Some repositories may also automaticallyassign a versionable mixin on creation of certain nodes (see §3.7.6Node Type Inheritance and §10.10Node Type Assignment).

Under both simple andfull versioning, on persist of a new versionable nodethat neither corresponds nor shares withan existing node:

Additionally, underfull versioning:

15.1.1 VersionHistory Object

The version history ofa versionable node is represented by aobject acquired through

or

whereis the absolute path to the node.

Conversely, given a,the versionable node to which it belongs can be found through

which returns theidentifier of the versionable node, which can then be used to getthe node itself (see §5.1.4Getting a Node by Identifier).

15.1.1.1 Root Version

The root version of aversion history is accessed through

.

Under full versioningthe root version can also be accessed through aor an equivalent standard content access method, since it alsoexists as anchild node of thenode, called

15.1.1.2 Versions

The full set ofversions within a version history can be retrieved through

.

If the version graphof this history is linear then the versions are returned in order ofcreation date, from oldest to newest. Otherwise the order of thereturned versions is implementation-dependent.

Alternatively, themethod

returns an iteratorover all the versions in theline of descent from the rootversion to the base version that is bound to the workspace throughwhich thiswas acquired.

Within a versionhistory,is the base version bound to workspaceif and only if there exists a versionable nodeinwhose version history isandis the base version of.

The line of descentfrom versionto,whereis an eventual successor of,is the ordered list of versions starting withand proceeding through each direct successor to.

The versions arereturned in order of creation date, from oldest to newest.

Note that in a simpleversioning repository the behavior of this method is equivalent toreturning all versions in the version history in order from oldestto newest.

Versions can also beretrieved directly by name, using

,

or by label, using,

(see §15.4VersionLabels).

15.1.1.3 Frozen Nodes

The frozen nodeswithin each of the versions within the history can be accesseddirectly from thethrough

and

.

These methods returnthe frozen nodes within the version history corresponding to, and inthe same order as, theobjects returned byand,respectively.

15.1.1.4 VersionHistory Extends Node

Theinterface extends.Under simple versioning version histories are not represented bynodes in content, so the methods inherited fromare not required to function and may instead throw a.Under full versioning theobject represents the correspondingnode and itsmethods must function accordingly.

15.1.2 Getting the Base Version

The method

returns the currentbase version of the versionable node at.

15.1.3 Moving Versionable Nodes

When an existingversionable node is moved to a new location withor,it maintains the same version history and no changes are made tothat history.

15.1.4 Copying Versionable Nodes and Version Lineage

Under both simple andfull versioning, when an existing versionable nodeis copied to a new location either in the same workspace or another,and the repository preserves the versionable mixin (see §10.7.4Dropping Mixins on Copy):

Under full versioning:

15.1.4.1 Version Lineage

Theproperty allows an application to determine thelineage of aversion across version histories that were produced by copying aversionable node to a new location.

15.1.5 Cloning Versionable Nodes

Under both simple andfull versioning, when a versionable nodeis cloned to another workspace:

Under full versioning:

15.1.6 Sharing Versionable Nodes

Under both simple andfull versioning, when a new nodeis added to the shared set of a shareable, versionable node:

Under full versioning:

15.2 Check-In: Creating a Version

A newversionof a versionable node is created using

whereis the absolute path of the node.

On check-in of aversionable nodewith version history:

Otherwise:

15.2.1 Version Object

A version isrepresented by aobject.

15.2.1.1 Version Name

The name given to aversion is automatically generated and must be unique within itsversion history. How the name is generated is up to theimplementation. The name of a version is retrieved with the method

,

inherited by.Under simple versioning this is the only inherited method that isrequired to function (see §15.2.1.7Version Extends Node).

15.2.1.2 Created Date

.

15.2.1.3 Containing History

15.2.1.4 Predecessors

returns the directpredecessors of this.Under simple versioning this set will be at most of size 1. Underfull versioning, this set maybe of size greater than 1, indicating amerge within the version graph.

The method

returns the directpredecessor of thisalong the same line of descent returned byin the current workspace (see §3.1.8.2Current Session andWorkspace), orif no such direct predecessor exists. Note that under simpleversioning the behavior of this method is equivalent to getting theunique direct predecessor (if any) of this version.

15.2.1.5 Successors

returns the directsuccessors of this.Under simple versioning this set will be at most of size 1. Underfull versioning, this set maybe of size greater than 1, indicating abranch within the version graph.

The method

returns the directsuccessor of thisalong the same line of descent returned byin the current workspace (see §3.1.8.2Current Session andWorkspace), orif no such direct successor exists. Note that under simpleversioning the behavior of this method is equivalent to getting theunique direct successor (if any) of this version.

15.2.1.6 Frozen Node

The frozen node of aversion is access with

.

Under simpleversioning without in-content version store the frozen node has noparent and therefore methods that depend on a node being within theworkspace tree (,,etc.) throw.Under full versioning a frozen node is the child of anwithin the in-content version store and so has all thecharacteristics of a normal node.

15.2.1.7 Version Extends Node

Theinterface extends.Under simple versioning, however, versions are not represented bynodes in content, consequently the inherited methods, other than(see §15.2.1.1Version Name), are not required to function.These methods may throw a.Under full versioning the methods ofinherited fromfunction on the actual node in content that backs that version (see§3.13.3.1nt:version).

15.2.2 Read-Only on Check-In

When a versionablenode is checked in, it and its subgraph becomeread-only. Theeffect of read-only status on a node depends on theon-parent-version (OPV) status of each of its child items.

When a nodebecomes read-only:

These restrictionsapply to all methods with the exception of (see §15.7Restoring a Version),(see §15.9Merge) and(see §10.8.3Updating Nodes Across Workspaces).These operations do not respectchecked-in status.

Note thatof a read-only node is possible, as long as its parent is notread-only, since removal is an alteration of the parent node.

15.3 Check-Out

A checked-in node ischecked-out using

,

whereis the absolute path of the node.

The checked-out stateindicates to the repository and other clients that the latestversion ofis “being worked on” and will typically be checked-in again atsome point in the future, thus creating a new version.

Onof a node:

Otherwise,

This method is aworkspace-write. There is no need to call.

15.3.1.1 Testing for Checked-Out Status

Only the actualversionable node has aproperty, however, the checked-in read-only effect extends into thesubgraph of the versionable node (see §15.2.2Read-Only onCheck-In). The method

returnsif the node atis read-only due to a check-in operation. The method returnsotherwise.

Alternatively, themethod

can also be useddirectly on the node in question.

15.3.2 Checkpoint

The method

is a shortcut forfollowed immediately by.

15.4 Version Labels

A version label is aJCR name (see §3.2Names) associated with a version. Aversion may have zero or more labels. Within a given versionhistory, a particular label may appear a maximum of once. Labels aretypically used to add application-level information to a storedversion.

Under simpleversioning labels are added, accessed and removed only through theversion-label-specific API.

Under full versioningversion labels are also exposed in content. Eachnode has a subnode calledof type:

15.4.1.1 nt:versionLabels

Each version label isstored as aproperty whose name is the label name and whose target is thenode within theto which the label applies. Dereferencing a label property isequivalent to calling.

15.4.1.2 Adding a Version Label

The method

.

adds the specifiedto the version with the specified.Themust be a JCR name in either qualified or expanded form andtherefore must conform to the syntax restrictions that apply to suchnames. In particular a colon (“”)should not be used unless it is intended as a prefix delimiter in aqualified name (see §3.2.5Lexical Form of JCR Names).

In a full versioningsystem,adds the appropriateto thenode. The addition of a label is a workspace-write and thereforedoes not require a.

If the specified labelis already assigned to a version in this history andisthen the label is removed from its current location and added to theversion with the specified.Ifis,then an attempt to add a label that already exists in this versionhistory will throw a.

15.4.1.3 Testing for a Version Label

The method

returnsif any version in the version history has the given.The method

returnsif the specifiedhas the specified.

15.4.1.4 Getting Version Labels

The method

returns all theversion labels on all the versions in the version history. Themethod

returns all versionlabels on the specified.

15.4.1.5 Removing a Version Label

The method

removes the specifiedfrom this version history.

In a full versioningsystem,removes the appropriatefrom the.The change is a workspace-write and therefore does not require a.

15.5 Searching Version Histories

In simple versioning,version histories are not searchable from within the JCR API. Inorder to make version histories searchable under JCR, versionstorage must be exposed in content. Since simple versioningrepositoriesmay expose version storage (it is simply notrequired), searchable versions are effectively an optionalextension of simple versioning (see §3.13.7Version Storageand §6Query).

Under full versioning,the exposure of version storage as content in the workspace allowsthe stored versions and their associated version meta-data to besearched or traversed just like any other part of the workspace.

15.6 Retrieving Version Storage Nodes

When anornode is acquired through a query or directly through a,the actual Java type of the returned object must be(in the casenodes) or(in the case ofnodes). This allows the application to cast the returned object toeitherorand use it in methods that take those types.

15.7 Restoring a Version

Restoring aversionable node to the state recorded in an earlier version can bedone with

.

Given a versionand a boolean flag,and lettingbe the versionable node in this workspace of whichis a version andbe the frozen node of,on, ifhas unsaved changes pending, anis thrown, otherwise:

15.7.1 Simple vs. Full Versioning Before Restore

Under simpleversioning, ifis checked-in then it is automatically checked-out before theis performed.

Under full versioningthemethods work regardless of whether the node in question ischecked-out or checked-in.

Under both simple andfull versioning, the changes are made through workspace-write andtherefore do not require.

15.7.2 Restoring Type and Identifier

Theprimary type, mixin types and identifier ofare set as follows:

15.7.3 Restoring Properties

For each propertypresent on(other than,and):

For each propertypresent onbut not on:

15.7.4 Identifier collision

An identifiercollision occurs when a node exists outside the subgraph rooted atwith the same identifier as a node that would be introduced by therestore operation. The result in such a case is governed by theflag. Ifis,then the incoming node takes precedence, and the existing node (andits subgraph) is removed (if possible; otherwise ais thrown). Ifis,then anis thrown and no changes are made.

15.7.5 Chained Versions on Restore

Each child nodeofwherehas an OPV ofandis,is represented innot as a copy ofbut as special node containing a reference to the version history of.On restore, the following occurs.

15.7.6 Restoring Child Nodes

For each child nodepresent on:

Underfull versioning each child nodeofwherehas an OPV ofandis versionable, is represented innot as a copy ofbut as special node of typecontaining a reference to the version history of.On restore,in the workspace is replaced by a version of.The determination of which version ofto use is implementation-dependent (see §15.7.5Chained Versionson Restore).

In arepository that supports orderable child nodes, the relativeordering of the set of child nodes C that are copied from F ispreserved.

For each child nodepresent onbut not on:

15.7.7 Simple vs. Full Versioning after Restore

Under simpleversioningis automatically checked-in.

Under full versioning theproperty ofis set to(though the other elements of a check-in are not performed).Additionally, theproperty ofis set to.Note that after the next check-out (see §15.3Check-Out) andsubsequent check-in ofthe versionwill acquire an additional direct successor, forming a branch.

15.7.8 Restore Variants

The method

takes theobject and a target path. This method only works in cases where nonode exists at.It is used to restore nodes that have been removed or to introducenew subgraphs into a workspace based on state stored in a version.

15.7.8.1 Restore by Version Name

The method

takes a version nameinstead of the actualobject. The version to be restored is identified by name from withinthe version history of the node at.This method requires that the node atexist and be a versionable node.

15.7.8.2 Restore by Version Label

Themethod

takes a version labelinstead of aobject (see §15.2.1Version Object). The version to berestored is identified by label from within the version history ofthe node at.This method requires that the node atexist and be a versionable node.

15.7.8.3 Restoring a Group of Versions

The method

is used tosimultaneously restore multiple versions. This may be necessary incases where sequential restoration is impossible due to a cycle ofproperties in the nodes to be restored.

15.8 Removing a Version

In someimplementations it may be possible to remove versions from within aversion history using.In such cases the version graph must be automatically repaired sothat the direct successor of the removed version becomes the directsuccessor of the direct predecessor of the removed version.

The method

removes the namedversion from this version history and automatically repairs theversion graph. If the version to be removed is,'sdirect predecessor set isand'sdirect successor set is,then the version graph is repaired s follows:

This change is aworkspace-write; there is no need to call.

15.9 Merge

The method

performs the firststep in amerge of two corresponding nodes:

Themethod can be called on a versionable or non-versionable node.

Like,does not respect the checked-in status of nodes. Amay change a node even if it is currently checked-in.

Ifnode (the one on whichis called) does not have a corresponding node in the indicatedworkspace, then themethod returns quietly and no changes are made.

Ifisandnode, despite having a corresponding node, is neverthelessnon-versionable then the merge method also returns quietly and nochanges are made.

Otherwise, thefollowing happens:

Ifisthen a merge test is performed onnode, call it.If isthen a merge test is performed recursively on each versionable node,within the subgraph rooted atnode.

The merge test is performed bycomparingwith its corresponding node in,call it.

The merge test is done by comparingthe base version of(call it)andthe base version of(call it).

For any versionable nodethere are three possible outcomes of the merge test:update,leave orfailed.

Ifdoes not have a corresponding node then the merge result forisleave.

Ifis currently checked-in then:

Ifis currently checked-out then:

Ifisthen the first time a merge result offail occurs, the entiremerge operation on this subgraph is aborted, no changes are made tothe subgraph and ais thrown. If no merge result offail occurs then:

Ifisthen:

In either case, (regardless of whetherisor)for each non-versionable node (including both referenceable andnon-referenceable), if the merge result of itsnearestversionable ancestor isupdate,or if it hasnoversionable ancestor, then it is updated to reflect the state ofits corresponding node. Otherwise, it is left unchanged. Thedefinition of corresponding node in this context is the same asusual: the match is done by identifier.

Note that a deepperformed on a subgraph with no versionable nodes at all (or indeedin a repository that does not support versioning in the first place)will be equivalent to an update.

Themethod returns aover all versionable nodes in the subgraph that received a mergeresult of fail.

Note that ifis,then merge will either return an empty iterator (since no mergefailure occurred) or throw a(on the first merge failure that was encountered).

Ifis,then the iterator will contain all nodes that received a fail duringthe course of this merge operation.

All changes made byare workspace-write, and therefore this method does not require a.

15.9.1 Merge Algorithm

The above declarativedescription can also be expressed in pseudo-code as follows:

letbe the workspace against which theis done.
letbe the flag passed to.
letbe the flag passed to.
letbe a set of identifiers, initially empty.
letbe the node on whichwas called.
.
returnthe nodes with the identifiers in.


letbe the corresponding node ofin.
if no such.
else ifis not versionable.
else ifis not versionable.
letbe base version of.
letbe base version of.
ifis an eventual successor ofand
is not checked-in.
else ifis equal to or an eventual predecessor of.
else.

if=throw. else add identifier of(if not already present) to the
property of,
add identifier ofto,
if=
for each versionable child nodeof.

if=
for each child nodeof.


replace set of properties ofwith those of.
letbe the set of child nodes of.
letbe the set of child nodes of.
judging by the name of the child node:
letbe the set of nodes inand in
letbe the set of nodes inbut not in.
letbe the set of nodes inbut not in.
remove fromall child nodes in.
for each child node ofincopy it (and its subgraph) to as a new child node (if an incoming node has the same
identifier as a node already existing in this workspace,
the already existing node is removed).
for each child nodeofin.

15.9.2 Merging Branches

When a merge test on anodefails, this indicates that the two base versionsandare on separate branches of the version graph. Consequently,determining the result of the merge is not simply a matter ofdetermining which version is the eventual successor of the other interms of version history. Instead, the subgraph ofmust be merged into the subgraph ofaccording to some domain specific criteria which must be performedat the application level, for example, through a merge tool providedto the user.

Theproperty is used to tag nodes that fail the merge test so that anapplication can find them and deal appropriately with them. Theproperty is multi-valued so that information about merge failures isnot lost if more than one successive merge is attempted before beingdealt with by the application.

After the subgraph ofis merged into,the application must also merge the two branches of the versiongraph. This is done by callingwhereis retrieved by following the reference stored in theproperty of.This has the effect of moving the reference-to-from theproperty ofto itsproperty.

If, on the other hand,the application chooses not to join the two branches, thenis performed. This has the effect of removing the reference tofrom theproperty ofwithout adding it to.

Once the lastreference inhas been either moved to(with)or just removed from(with)theproperty is automatically removed, thus enabling this node to bechecked-in, creating a new version (note that before theis removed, itssetting ofprevents check-in). This new version will have a direct predecessorconnection to each version for whichwas called, thus joining those branchesof the version graph.

All changes made byandare workspace-write and therefore do not require.

15.9.3 Merging Activities

In repositories thatsupport activities (see §15.12Activities) merging anactivity into another workspace is done with the method

.

(see §15.12.7Mergingan Activity into Another Workspace).

15.10 Serialization of Version Storage

Serialization ofversion information can be done in the same way as normalserialization by serializing the subgraph below.The special status of these nodes with respect to versioning istransparent to the serialization mechanism.

The serialized contentof the source version storage can be imported as “normal”content on the target repository, but it will not actually beinterpreted and integrated into the repository as version storagedata unless it is integrated into or used to replace the targetrepository's own version storage.

Methods for doing thiskind of “behind the scenes” alteration to an existing versionstorage (whether based on the serialized version storage of anotherrepository, or otherwise) are beyond the scope of thisspecification.

15.11 Versioning within a Transaction

In a repository thatsupports both versioning and transactions, all versioning operationsmust be fully transactional, meaning that they can be bracketedwithin a transaction and rolled-back just like any other set ofoperations.

15.12 Activities

Activities provide away of grouping together a set of logically related changesperformed in a workspace and then later merging this set of changesinto another workspace.

Before starting tomake a particular set of changes, the user sets the currentactivity. Each subsequentmade within the scope of that activity will associate that activitywith that checked-out versionable, and will create a version that istagged with the specified activity when that versionable issubsequently checked-in.

Abstractly, therefore,an activity is a set of changes that produce new versions. However,if that set includes changes that produce more than one versionwithin a particular version history, then those versions must all beon the same line of descent, that is, there must be a non-branchingsequence of direct successor relationships beginning at the rootversion of the version history that reaches every version in theset. This ensures that there is always at most one “latest”version that contains all changes in a given version history for agiven activity.

15.12.1 Support for Activities

Support for activitiesis an optional addition to the full versioning feature. Animplementation that supports versioningmay supportactivities.

Whether a particularimplementation supports activities can be determined by querying therepository descriptor table with

.

A return value ofindicates support for activities (see §24.2RepositoryDescriptors).

15.12.2 Related Node Types

Activities arerepresented by nodes of node type:

mandatoryautocreated protected

The relationshipbetween version and activity is modeled by the property,in theandnode types:



15.12.3 Activity Storage

Activities arepersisted as nodes of typeunder system-generated node names in activity storage below.

The organization ofthis subgraph is left up to the implementation (for example, theremay be intervening nodes structuring the activity storage).

Similar to thesubgraph, the activity storage is a single repository wide store,but is reflected into each workspace. However access control may beemployed so that different sessions see different parts of the tree.

15.12.3.1 Activity Storage is Read-Only

The activity storagesubgraph is not writable through the core write methods (see §10.2Core Write Methods). It can only be altered through theactivity-specific write methods described in this section.

15.12.4 Creating an Activity

Activities are createdusing:

creates a newnode at an implementation-determined location in subgraph andreturns it.

The name of thenode is automatically generated by the repository. The repositorymay use theparameter as a hint to give a value to theproperty of the new node. The new node addition is dispatchedimmediately and therefore does not require a.

15.12.5 Setting the Current Activity

is called by the userto set the current activity on the session by specifying apreviously creatednode. Changing the current activity is done by callingagain. Cancelling the current activity is done by callingand results in the session having no current activity. The methodreturns thepreviously setnode orif no such node exists.

Assuming,

then eachof nodemade throughwhileis in effect causes the following:

15.12.6 Getting the Current Activity

The method

returns the noderepresenting the current activity orif there is no current activity.

15.12.7 Merging an Activity into Another Workspace

Once an activity hasbeen completed, the changes that it records can be imported intoanother workspace. This is done with a variant of the merge method:

This method merges thechanges that were made under the specified activity intoworkspace.

An activitywill be associated with a set of versions through thereference of each version node in the set. We call each suchassociated version a member of.

For each versionhistorythat contains one or more members of,one such member will be the latest member ofin.The latest member ofinis the version inthat is a member ofand that has no eventual successor versions that are also members of.

The set of versionsthat are the latest members ofin their respective version histories is called the change set of.It fully describes the changes made under the activity.

This method performs ashallow merge, withequal to,into this workspace (see §15.9Merge) of each version in thechange set of the activity specified by.If there is no corresponding node in this workspace for a givenmember of the change set, that member is ignored.

This method returns aover all versionable nodes in the subgraph that received a mergeresult offail (see §15.9.1Merge Algorithm).

All changes madethrough this method are workspace-write and therefore do not require.

15.12.8 Removing an Activity

Somerepositories may support

whichremoves the specified activity node from the activity storage andautomatically removes allproperties referring to that node in all workspaces, with theexception ofproperties in version storage. The existence of ato the activity node from within version storage will cause anexception to be thrown. Changes made through this method areworkspace-write and therefore do not require.

15.13 Configurations and Baselines

Aconfigurationis the subgraph of a specifically designated versionable node(called theconfiguration root node) in a workspace, minusany parts of that subgraph that are themselves designated asconfigurations. Abaseline is the state of a configuration atsome point in time, recorded in version storage as a version object.

15.13.1 Support for Configurations and Baselines

Support forconfigurations and baselines is an optional addition to the fullversioning feature. An implementation that supports full versioningmay support configurations and baselines. Whether aparticular implementation supports configurations and baselines canbe determined by querying the repository descriptor table with

.

A return value ofindicates support for configurations and baselines (see §24.2Repository Descriptors).

15.13.2 Configuration Proxy Nodes

Each configuration ina given workspace is represented by a distinctproxy node oftypelocated inconfiguration storage within the same workspaceunder.The configuration storage in a particular workspace is specific tothat workspace. It is not a common repository-wide store mirroredinto each workspace, as is the case with version storage.

The proxy node of aconfiguration is used to perform certain operations on thatconfiguration. In particular, version operations performed on theproxy node act not only on that node itself but also on theconfiguration it represents, as a whole. Creating a baseline, forexample, is done by performing aon a configuration’s proxy node.

15.13.2.1 nt:configuration

Every configurationproxy node is of type:

mandatoryautocreated protected

This node type is asubtype ofand adds a single property, theproperty,which points to the root node of the configuration that this proxyrepresents.

Since everyconfiguration proxy node is versionable, each has a version history.The versions within this history store state information aboutconfiguration represented by the proxy node, in addition toinformation about the proxy node itself.

15.13.2.2 Structure of Configuration Storage

The organization ofconfiguration storage is left up to the implementation (for example,there may be intervening nodes structuring the storage). It isexpected that access control will also be employed to ensure thatonly sessions with appropriate authorization may create or haveaccess to particular configurations.

15.13.3 Creating a Configuration

A configuration iscreated by designating anodein the workspace as a configuration root node. This is done bycalling

whereis the path of.

On creation of a newconfiguration with root,a new proxy node,of type,is created underand a new version historyis created forwith a root version.Note thatis also called abaseline history and its contained versions,including,are calledbaselines. The baselines withinstore not only the state ofbut also the state of the configuration represented by(see 15.13.4.1Creating a Baseline).

The properties ofandare initialized as follows:

Thecall will fail if

Themethod is workspace-write. Therefore the changes it makes aredispatched immediately and ais not required.

15.13.4 Baselines

A baseline records thestate of a configuration at some particular time and is representedby a version (i.e., annode) of thenode in question.

15.13.4.1 Creating a Baseline

A baseline is createdby performing aon a configuration proxy node (i.e., a node of typefound in configuration storage). Note that sinceis subtype of,a configuration node will have its own version history,distinctfrom the version history of its configuration root node.

Onof the configuration proxy node:

How the configurationstate information is stored is up to the repository. It need not bestored as content in the substructure of thenode. For example, some repositories are likely to have someefficient internal mechanisms involving lists of identifiers,possibly stated as a delta against the direct predecessor baseline.The only requirement is that baselines be “restoreable”.

15.13.4.2 Restoring a Baseline

Using the method

whereis a baselineobject, is thenode whose version history containsandis the configuration root node pointed to by:

Theparameter behaves just as in a normal restore expect that that itapplies to all nodes restored below.The same behavior applies for the multi-version signature ofrestore,

except that multiplebaselines may be restored simultaneously.

15.13.4.3 Creating a Configuration from an Existing Baseline

The method

,

whereis a baselineobject andis a path to a location where no node exists but which has asuitable parent node, creates a new configuration atby restoring the baseline.A configuration proxy nodewithpointing to the root node of the new configuration atis automatically created in configuration storage. If a node alreadyexists at,the method fails. The variant signatures

,

and

,

work identicallyexcept that the baseline to be restored is identified either by nameor by label instead of being passed in as aobject.


[8]ページ先頭

©2009-2025 Movatter.jp