I've been asked to work with an analytics team whose main deliverables consist of Tableau dashboard files (which are XML). They are looking to develop some automation and best practices around versioning and deployment, and I am attempting to get them set up to use repositories and pipelines in Azure DevOps (their organization's standard).
I am attempting to set up a repository strategy with development similar to what is described here. The team will have an infinitely-lived main
branch representing whatever is currently in production, an infinitely-lived development
branch for changes not yet pushed to production, and short-lived feature branches created to make updates and additions. I am trying to create a proof of concept but am running into challenges when trying to complete merges from development
into main.
I started to make a proof of concept by creating the empty repository with main
and then creating development
from the main
branch. Then, I created the initial
branch from development
, and committed a test Tableau XML file to the initial
branch. I merged initial
into development, completed the PR, deleted initial
, then merged development
into main
(but did not delete development
). So far so good.
Then I created update
from development
, and updated the Tableau file. I merged into development
, completed the PR, and deleted update
with no issue. However, if I now attempt to merge development
into main
, I have a merge conflict. The process is attempting to merge all the commits on development
into main
, including the creation of the (monolithic) Tableau file, but there is already a commit on main
that creates that file from the prior PR. So I am getting a merge conflict.
How can I create a merge strategy to ensure that I am only merging the incremental changes into main
after the last merge of development
into main
? I only need the commit that updates the file to merge into main
at this point, not all the commits since the development
branch diverged from main
at the beginning of the repo's creation.