All project assets MUST be version controlled.
1. Source Code
1.1 All source code MUST be version controlled with git in a VCS provider. Examples: Azure DevOps, Github, Gitlab or Bitbucket.
1.2 All code repositories MUST follow trunk based development with short lived feature branches.
1.3 All code integrated to trunk MUST be peer reviewed by pair programming, mob programming or pull request workflow. See guidelines on pull requests for which cases review is not needed.
1.4 Releases MUST be tagged with the version number and included features in the following format.
git tag -a v1.0.0 -m "Release v1.0.0
AB#1234 Most Excellent Feature
AB#2345 Fixed a most serious bug."
2. Documents
2.1 Writings that should be sent, reviewed, approved, signed off or stored for legal purposes, MUST be handled as documents. Examples: Agreements, Design Documents, Specifications, Project Plans, Business Proposals.
2.2 Documents MUST be version controlled in a document management system. Examples: OneDrive, Google Drive or Dropbox
2.3 Documents MUST be suffixed with last edited date in the format _yyyyMMdd. Example: Pheonix_Requirement_Specification_20210228.docx.
2.4 Updating a document you MUST create a copy with updated timestamp in the format _yyyyMMdd.
3. System Documentation
3.1 Writings that document the system on a higher level than source code MUST be written as system documentation. Examples: System design, Solution architecture, UI Design, Release Log, End User Documentation, API documentation.
3.2 System documentation MUST be versioned controlled in a wiki or wiki like system. Examples: Confluence, Github Wiki, Azure DevOps Wiki, Postman, Swagger API Platform, Figma.
4. Configuration
4.1 Configuration variables MUST be versioned controlled in a configuration control system. Examples: Azure DevOps Secure Files, Azure KeyVault, Azure App Configuration.
5. Issue Tracking
5.1 All work to be done MUST be written as issues. Examples: Requirements, bug reports, change requests.
5.2 All issues MUST be version controlled in an issue management system that supports version control. Examples: JIRA, Azure DevOps, Github Issues, Bugzilla, Trello
5.3 All issues MUST have a unique identifier and a name.
