Building an application, especially with others, requires a grip on the changes you make and timing so you don't get in the way of your end-users. Sandboxes offer great solutions, so you can split the environment used by your end-users from the environment where you develop. Then, when changes are done, merge the sandbox and the new additions are available in the production environment.
This is considered a one-way street, where changes need to be applied from the bottom-up (Development, Testing, Acceptance, and finally Production). It's inconvenient to take this route when small changes need to be applied on short notice. By using the Branching option, you can easily apply quick fixes while maintaining the development-street integrity.
Below, you'll find more information about this feature, how and when to use it, and what to look out for.
Name already taken
I.E. Branch A and B both have the same name and try to merge this to the parent.
Variable Name (in same context, i.e. -> page, action, global)
Webservice.name
Webservice > endpoint.name
(Custom)Model.name (Only on create)
(Custom)Model > property.name
(Custom)Model > relation.name
PublicFile.name
AuthProfile.name
Config.name
Endpoint.cachedFullPath
Already modified
I.E. Branch A updates an action description and Branch B also updates the same description, even if changed to the same value.
Page.property
UI Component (Position)
Component option.property
(Custom)Model.property
(Custom)Model > Property.property
(Custom)Model > Relation.property
Action.property
Action > Event.property
Back office view.property
Back office grid.property
Template
Variable.property
AuthProfile.property
Deleted item used
I.E. Branch A deletes an action and Branch B updates a property on this action.
Modified item deleted
I.E. Branch A modified a property on the action and Branch B deletes this action.
Resolving conflicts (edited_same_item):
Situation 1A:
C1: Base Sandbox
C2: Create Branch A from Sandbox
C3: Create Branch B from Sandbox
C4: In Branch A, Change the value from template to Hello World!
C5: Merge Branch A in the Sandbox
Changed value from template to Hello World!C6: In Branch B, Change the value from template to Product overview
C7: Merge Branch B in the Sandbox Conflict "edited same item"
Resolve conflict via UI, changed value from template to Product overviewC8: Update Branch A with new changes in Sandbox NO CONFLICT
Changed value from template to Product overview
Situation 1B:
C1: Base Sandbox
C2: Create Branch A from Sandbox
C3: Create Branch B from Sandbox
C4: In Branch A, Change the value from template to Hello World!
C5: Merge Branch A in the Sandbox
Changed value from template to Hello World!C6: In Branch B, Change the value from template to Product overview
C7: Merge Branch B in the Sandbox Conflict "edited same item"
Resolve conflict via UI, changed value from template to Product overviewC8: In Branch A, Change the value from template to Bye World!
Open the merge overview now shows a conflict.C9: Update Branch A with new changes in Sandbox CONFLICT "edited same item"
Resolve conflict via UI, changed value from template to Product overview
Resolving conflicts (deleted_item_used):
Situation 2: Resolve conflict "deleted item used" when merging.
1C: Base Sandbox, containing a Global Variable with the value: 'Demo'.
2C: Create Branch A from Sandbox.
3C: Create Branch B from Sandbox.
4C: Delete { Globale Variabele: 'Demo" } in Branch A.
5C: Merge Branch A in Sandbox, Delete { Global Variable: 'Demo" }.
6C: Create a new Actie in Branch B with a Conditional event and use the Global variable in it:
{ Action: 'New action', { Event: 'Conditional', { GlobalVariable: 'Demo' } }.7C: Merge Branch B to Sandbox gives: Conflict "Deleted item used"
This is because within the Sandbox the global variable no longer exists.
Possible solutions:
- Update from Sandbox to Branch B removing the global variable or removing the Global variable in Branch B. You can choose to create a new global variable and use this within the action event.
8C: Merge Branch B in Sandbox with the resolved conflict en possible other work.
Situation 3: Resolve conflict "deleted item used" when updating.
1C: Base Sandbox, containing a Global Variable with the value: 'Demo'.
2C: Create Branch A from Sandbox.
3C: Create Branch B from Sandbox.
4C: Create a new Action in Branch B with a Conditional event and use the Global variable in it:
{ Action: 'New action', { Event: 'Conditional', { GlobalVariable: 'Demo' } }.
5C: Merge Branch A in Sandbox, create: { Action: 'New action', { Event: 'Conditional', { GlobalVariable: 'Demo' } }
6C: Update Sandbox to Branch B gives: Conflict: "Deleted item used"
This is because within Branch B the global variable no longer exists.7C: Create a new Branch C from Sandbox.
8C: Delete the { GlobalVariable: 'Demo' } OR delete the { GlobalVariable: 'Demo' } used within the conditional event in Branch C. You can choose to create a new global variable and use this within the action event.
9C: Merge Branch C in Sandbox
10C: Update Branch B from Sandbox
Hope these situations give you a better insight into Branching from your sandboxes to give you more freedom in application development.