We want to use Atlassian products to trace our Salesforce code. I begun reading the documentation https://developer.atlassian.com/display/SFDC/The+Salesforce+Development+Workflow I didn't understand one thing. Why do we need the UAT/master branch? What I understood is, we have Individual Sandbox branches where each developer devlopes some part of the code. We have a Shared Developer Sandbox branch. Individual Sandboxes are merging to Shared Sandbox. We have a Salesforce Sandbox which is in sync with the Shared Developer Sandbox branch. I can understand why we need UAT Salesforce Sandbox. But I don't understand why we need a Branch to it? The UAT/master branch would always be the same as the Shared Developer Sandbox branch. Here is a drawing, explaining better what I meant.
There are four phases of development from a typical source code control perspective. Development, QA, UAT, and production.
Technically, each branch is a release. Therefore, if production is release X, UAT is release X+1, QA is release X+2, and development is release X+3.
Since you don't want to release untested code, master can't link to all three orgs. Even in methodology where QA and UAT must occur in the same release cycle, UAT and production will still be separate releases. And you'll still need at least three branches to keep incomplete our untested code apart.
Your first image depicts how source control and sandboxes are related in a typical organization.