FAQ: Which IVersionEdit interface should I be using?
Which IVersionEdit interface should I be using?
The IVersionEdit:Reconcile interface has evolved over several releases. Each reconcile method is intended to be used at different times based upon the task being performed.
If the intention is to post the version being reconciled, where there is an opportunity for anyone else on the system to also perform a reconcile, then IVersionEdit:Reconcile should be used. In this case, the reconcile process acquires a version lock on the target version preventing any other users from reconciling and posting to the same version until the process that holds the version lock posts or stops editing.
The IVersionEdit2 interface is used to reconcile a version with a target version and optionally not obtain version locks during the process. Once reconciled, the object provides the ability to work with representations of the version prior to start editing, the pre-reconcile version, the reconcile version, and the common ancestor version for conflict resolution.
Under these conditions, IVersionEdit2:Reconcile should only be used when the intention is to reconcile without posting. Without obtaining the version lock, other users can reconcile and post to the same target version. If IVersionEdit2:Reconcile is used and the target version is modified prior to executing IVersionEdit:Post, an error message indicates that the target version has been redefined to reference a new state and the version must be re-reconciled again prior to posting.
The IVersionEdit3 interface is used to reconcile a version with a target version and optionally not obtain version locks during the process and abort the reconcile process if conflicts are detected. An application consumes this interface when the intention is to abort the reconcile process when any conflicts are detected. An example of such an application is a type of 'batch' program that performes reconcile and post. Since a user cannot resolve conflicts at the end of the process, resources and time are saved if the process is aborted once conflicts are detected.
If the Boolean argument to abort conflicts is set to true and conflicts are detected, the application must immediately stop the edit session and not save the changes.
The IVersionEdit:Reconcile provides the application framework with the flexability to develop a mixture of solutions for enterprise geodatabase implementations.