Branching and Forking abilities allow you to branch and fork projects as well as merge changes between linked projects.
Branching duplicates a project and allows changes to be made separately so that the two projects contain different changes. When a project is branched it creates a parent-child relationship with the new project.
Forking also duplicates a project. The main difference is that a sibling relationship is created with the new project. This creates a tree-like structure where both projects share the same parent project.
Merging takes any additions, changes, deletions, and restores of a source project and integrates them into a target project. Merging can only take place between projects that have a direct parent-child relationship. This relationship can be verified by viewing the projects on the tree chart contained in the ‘Project Version Control’ page.
Within the ‘Project Version Control’ view, projects can be branched, forked, and merged.
Projects and their (parent and child) branches can be viewed in a tree chart.
Just above the tree chart there are quick links available to navigate to the source and target projects.
Changes between project branches are displayed in a table including additions, changes, deletions, and restores. If there are differences between two projects, the projects can be merged.
Navigating to Project Version Control
Innoslate provides multiple options for navigating to the ‘Project Version Control’ view:
Option 1. By opening the ‘Switch Projects’ button in the navigation bar and selecting the ‘Branching’ button.
Option 2. From the ‘Organization Dashboard’ via the ‘Branching’ button.
Option 3. From the ‘Manage Projects’ view via an icon on the right-hand side.
Creating a Branch/Fork
Create a new Branch/Fork by clicking the ‘+ Branch/Fork’ button on the right of the page.
Select ‘Branch Project’ (or ‘Fork Project’) from the dropdown.
This will open the modal to begin the creation process.
The Name field for the new project is the only required section. The ‘Schema Only’ checkbox is optional. Selecting this will create a new branch (or fork) that only copies the schema of the source project.
The ‘Options’ dropdown is also optional. Note: Adding the ‘Include Baselines’ option to the list will automatically add the ‘Include History’ option as this is required for baselines to work properly.
Select the ‘Confirm’ button. This will create the new branch (or fork) and direct you to the new project’s ‘Project Dashboard’.
To merge projects select a source project from the ‘Source Project’ dropdown.
Then select a target project by using the tree chart generated below. The chart displays any parent and child branches that exist. The ‘Full Screen’ button enlarges the tree chart to fill the entire window.
At the bottom the ‘Differences’ table displays any changes, additions, deletions, and restores to be merged from the source project into the target project.
If there are more than 1000 additions, changes, deletions, or restores the count will be abbreviated to ‘999+’.
If there are more than 2000 additions, changes, deletions, or restores then the table will provide a ‘Load More’ button which will load up to the next 2000 updates to be viewed in the table. Note: Although updates over 2000 are not visible on the table without loading more, all the available updates will still be merged in the merging process.
Select the ‘Merge’ button at the bottom of the page.
Review the information in the modal. Then select the ‘Confirm Merge’ button at the bottom of the modal.
Select the ‘Go To Target Project’ button once the merge is complete in order to navigate to the newly merged target project.
Merging changes, deletions, and restores into the target branch will initially cause duplicate updates. These are not actually duplicates but visually they will appear as such.
Example: The project outlined in red is the source project (parent project) and has updates to be merged into the target project (child project) outlined in blue.
After merging the updates, and returning to the ‘Project Version Control’ view, select the old target project (child project) as the new source project outlined in red, and the old source project (parent project) as the new target project outlined in blue.
The exact updates that were merged into the old target project (child project) are displayed in the differences table as if they are new updates. If merge is selected again at this point both branches will be up to date according to the system, but no actual changes to the database will have been made.