Search code examples
gitazurerepositorydevops

Azure DevOps Repository Strategy


I am in the process of implementing Azure DevOps (on Prem) at my company and have a few best practices question.

Small bit of Background:

We sell a packaged product that consists of a handful of VS2019 projects (4 winform applications, 1 windows service, 1 rest api, and a handful of wix installer projects). We do quarterly releases and distribute our product in the form of a handful of .msi's. All of the development is done inhouse by 5 developers. We plan on using the following Git branching model: https://nvie.com/posts/a-successful-git-branching-model. All VS2019 projects are versioned and released together.

Azure Git Repo Question:

Would it make sense to have just a single repo to house the source code for all of the VS2019 applications? This way I would only have to set one set of branching policies and permissions. Doing release branching also seems like it would be easier using just one repo (I am assuming that if I had one repo per Visual Studio project, I would have to create and coordinate Release branch creation for each repo?). It also saves time on repo setup and maintenance. Is this advisable? Is there a reason why multiple repos are a better option? If the use of a single repo is advisable, how would we handle CI builds and builds when Pull Requests get submitted? If the pull request is for code in only one application, I don't want to build the other ones.

Thanks in advance,

Scott


Solution

  • I think multiple repostories is the way to go... When using a single repository you encounter many problems such as: long git clone time, CI gets complicated, a lot of merge conflicts etc.. At my company we also use azure devops and we have multiple repositories where we release weekly. Our release and CI is completely automated and we make a release automatically when a tag on master is pushed (we are using a fairly similar git branching approach to yours).

    As every project produces a different output (.msi for the winforms, and probably .dll for the webapi) multiple repos is definitely the way to go. Using this approach you can also release products singularly (for example a hotfix on the rest api wouldn't require a release on the winforms application etc.).