During both Import and Export Lure distinguishes between incoming and outgoing changes:
Lure makes use of a base file approach (similar to Subversion base file approach) to determine the direction of any changes. These base source files are stored on the local file system in the tree below the
.lure folder. The
.lure folder is created at the root of the Lure source tree, that is in the same folder where the
.lure-connect file is typically stored. Every time Lure updates a source file on the local file system using Export or installs DDL or PL/SQL to the database using Import, the corresponding base file in the
.lure folder is updated. This enables Lure to detect whenever changes are made to the database or to the source on the local file system after the last Import or Export.
During Export Lure only applies outgoing changes (changes in the database) to source files. Incoming changes (changes in the source files) are logged in the console but kept intact. In order to revert incoming changes use the command ''export --over''.
During Import Lure only applies incoming changes (changes in the source files) to the database. Outgoing changes (changes in the database) are logged in the console but kept intact. In order to revert outgoing changes use the command ''import --over''.
A conflict occurs and is detected by Lure when for the same object both incoming and outgoing changes are detected. A conflict can be overwritten by using the ''--over'' option, e.g. ''import --over''.
The main benefit of distinguishing between incoming vs outgoing changes is that it prevents users from inadvertently overwriting or reverting changes that should in fact be kept. If gives the user a chance to verify before overwriting earlier changes.
For Export this will most often occur whenever several files are updated from the source control repository but the user fails to notice all these changes and only imports some files to the database.
For Import issues can arise whenever developers share the same database environment. Lure will in this case prevent one developer from unintentionally overwriting another developer's work in progress.
As such users are discouraged from using Lure Deploy unless the user has sole control and responsibility for the particular database environment.
Whenever outgoing changes are detected during an Import, or incoming changes are detected during an Export, Lure will keep these changes intact.
Consider the following outcome of an export operation, where the package PACKAGE_2 contains incoming changes (as indicated by the icon decoration):
The incoming change in package PACKAGE_2 was kept during export.
You can use the Lure Stage comparison editor to review any such remaining differences after an import/export operation. From the context menu select
Compare With →
At this point you could then merge any changes from the
Database Source to
File Source and save these changes. If necessary use Import to install these merged changes back to the database. You may need to use
Import Over if there are any remaining outgoing changes that you want to overwrite.