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.