Tracking Plan ManagementBranched workflowsPulling/pushing items between branches

Pulling and Pushing Items Between Branches (alpha)

You can add an item from one branch to another by pulling or pushing them. When that is done, it’s the same item on both branches where the ID of the item remains the same, meaning that this will not result in direct merge conflicts.

  • Pushing an item: Adding an item from a branch that a user is currently on, to another branch.
  • Pulling an item: Adding an item to a branch that the user is currently on, from another branch.

Pushing and pulling are currently out in alpha. Contact us to get access.

Pushing items to another branch

Pushing events, properties and property bundles from the branch that a user is currently on, to another branch is possible from the Tracking plan changes view. To access the tracking plan changes view, first you have to be on a branch and then you can click “View Changes” under the branch name.

Navigating to tracking plan changes

In the tacking plan changes view, each changed item is displayed individually. For the items that can be pushed to another branch (currently events, properties and property groups), there is a button in the top right corner for pushing the item.

Pressing push button

When that button is clicked, you will get a modal that prompts you to pick a branch to push the changes to and review your selection. You have to first pick a branch so that Avo can accurately display how the changes will be applied, as it might differ per branch if the item already exists on the destination branch.

Empty review modal

When the destination branch is selected, the actual diff for the destination branch is shown. The items shown can be expanded to show the details of what will be added to the destination branch. If the item you selected to push is an event or a property bundle, any related property changes are displayed below. Avo determines which changes are necessary to push to the destination branch leaving out changes that are unrelated to the selected event. See the property changes related to event section for details. Once you have reviewed your selection, you can click the Push to branch button and the changes will be applied to the destination branch.

Empty review modal

Then you can navigate to your destination branch and use the item you pushed there.

Empty review modal

Pulling items from another branch

Pulling events, properties and property bundles from another branch to a branch that a user is currently on is now possible when searching for or creating those items. In the alpha, pulling will be available in the following areas:

Items from other branches surfaced in context of item details

The in-context search now surfaces items from other branches, in addition to items from the current branch and main. So when you are adding a property to an event in event details, properties from other branches are surfaced. Same with adding events to metrics or properties and adding properties as filter to a metric.

To do that, open the details view of the item you want to add to. In this example we’re adding a property to an event.

Event details

Type in what you are looking for. Then Avo will surface properties from other branches, below the ones that are found on your branch.

Searching for a property in event details

When you click a property that was found on another branch, you will be prompted to review and confirm the changes that would be applied to this branch. You can expand the item changes to review the details and then click confirm to pull the property to your branch and add it to your event.

Review changes to pull into your branch.

Then the property has been added to your event and is available for reuse on your branch.

Property added to branch.

Items with similar names surfaced during creation

When creating new events, properties and property bundles, the creation modal now surfaces similar items from other branches, in addition to what’s already on your branch. In this example we are creating a new event.

Create new event.

When you click the name of an event from another branch, you are prompted to review the changes that would be applied to the branch like shown above. Once you have review the changes, click confirm and the event will be pulled to your branch.

When you search for tracking plan items in the global search, accessible in the side bar and via CMD+K, you now get results from other branches in addition to what’s already on your branch. In this example we’re searching for a property.

Surfacing items from other branches in global search.

When you click or hit enter when a property from another branch is highlighted, then the property is opened in view mode from the other branch. Click “Pull to branch” to to review changes before pulling the property and making it available to add to events in your branch.

Viewing a property from another branch.

When you click “Pull to branch”, you’re prompted to review the changes the same way as described above.

Merging branches where items have been pushed or pulled

When either the source or destination branch where items have been pushed or pulled are merged to main, you will be prompted to pull main on the branch where the items still remain. As the ID of the items are the same, the items exist on main and there is no need to keep them specifically on the other branch. However, changes to these items between the branches will reconcile and the remaining diff will appear instead of the excluded item or changes.

When an event or property bundle is selected to push to another branch, the review modal will show a list of properties related to the event or property bundle. By default, all related properties and their changes are kept on the event or property bundle.

For events, it’s possible to toggle whether the related properties and their changes are pushed too. The related property changes are the following:

  • Any new properties that were added to the selected item and do not exist on the destination branch
    • When toggled off on events, the property will be excluded on the destination branch
  • Any existing properties that were added to the selected item and are not on the event on the destination branch
    • When toggled off on events, any changes to the property will be excluded on the destination branch
  • Any existing properties on the selected item have been modified such that they are different on the destination branch
    • When toggled off on events, any changes to the property will be excluded on the destination branch, but the property will remain on the event.
Toggle related property changes

What can be pushed and pulled and from where?

Pushing and pulling is currently available for the following items:

  • Events
  • Properties
  • Property bundles

Pushing is available for new and updated items from the following views:

  • Tracking plan changes (button on each item that can be pushed)

Pulling is available for new items from the following areas:

  • In context search in item details
    • Adding a property to an event in event details
    • Adding an event to a property in property details
    • Adding an event to a metric in metric details
    • Adding a property as an event filter in metric details
  • Global search accessible via CMD+K and search input in the side bar
  • Item creation modal
    • Creating a new event from the events view
    • Creating a new property from the property view
    • Creating a new property bundle from the property bundle view

Pushing and pulling use cases

Pushing and pulling has several use cases. Some examples are below.

Breaking down a large branch

It often happens when designing data, that a branch becomes quite big, containing a lot of event and property changes. Then it’s helpful to be able to break that branch into more manageable chunks, both to make review and implementation easier.

That is now possible by pushing items from the diff view to different branches.

One team is ready to implement but not others

Commonly, Avo branches need to be implemented by more than one team. In many cases, teams are not able to implement in parallel, so it can be helpful to break the branches down for each team.

Now this is possible for platform teams. If for example the iOS team is ready to implement first, then items with the iOS source can be pushed to another branch. On the destination branch, other sources can be removed from events and/or property presence per source can be adjusted. Then the iOS team can implement for only the iOS source, merge the branch and the changes will remain for the other sources on the original branch.

Reusing properties between open branches

Sometimes implementation of the branch blocks it to be merged to main and then the items that have been created on the branch can not be used on other branches. Or sometimes different people are designing data for separate features in parallel and end up creating duplicate events on separate branches. That happens because previously, Avo didn’t surface items from other branches. But that is coming soon.

Now however, if a branch is blocked for whatever reason, you can go to that branch and push the item you want to reuse to your branch.