Documentation

Branching Reference

In this article

This article contains general information and an overview of different scenario's involving the Branching feature offered in My Betty Blocks

Robert van Boesschoten

Published: 20-01-2021

Last updated: 20-01-2021

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 endusers. Sandboxes offers a great solutions, so you can split the environment used by your endusers 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
  • Backoffice view.property
  • Backoffice 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 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 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 overview
  • C8: 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 van Sandbox
  • C3: Create Branch B van Sandbox
  • C4: In Branch A, Change 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 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 overview
  • C8: In Branch A, Change 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 Globale Variabele 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 remove 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 in Branching from your sandboxes to give you more freedom in application development.


In this article



×

Not sure where to start?

Click here to register and start learning
Register