{"_path":"/guidelines-internal/development-git","_draft":false,"_partial":false,"_empty":false,"title":"Development: Working with Git & GitHub","description":"This document describes all Git related guidelines. Since GitHub is our preferred Git provider, GitHub-related guidelines may also be described here.","excerpt":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"development-working-with-git--github"},"children":[{"type":"text","value":"Development: Working with Git & GitHub"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This document describes all Git related guidelines. Since "},{"type":"element","tag":"a","props":{"href":"https://github.com","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"GitHub"}]},{"type":"text","value":" is our preferred Git provider, GitHub-related guidelines may also be described here."}]},{"type":"element","tag":"h2","props":{"id":"gitflow-workflow"},"children":[{"type":"text","value":"Gitflow Workflow"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We rely on the basic principles of the "},{"type":"element","tag":"a","props":{"href":"https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Gitflow"}]},{"type":"text","value":" Workflow, with minor modifications.\nIn summary every project must follow these rules:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Every project "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" have a "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"dev"}]},{"type":"text","value":" branch is required from the time the project is in production."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Features, Bugfixes and Hotfixes require their own branch, pull request and review."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The use of a "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"release"}]},{"type":"text","value":" branch is omitted."}]}]},{"type":"element","tag":"img","props":{"src":"/images/dev/gitflow.svg"},"children":[]},{"type":"element","tag":"h3","props":{"id":"releases"},"children":[{"type":"text","value":"Releases"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Every deployment to a production environment "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be based on a Git release "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"tag"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The release number "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be an incrementing version according to the branch."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"There "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"SHOULD"}]},{"type":"text","value":" be only one release per day."}]}]},{"type":"element","tag":"h2","props":{"id":"branch-naming"},"children":[{"type":"text","value":"Branch naming"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The starting branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The development branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be namend "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"dev"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A feature branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be named using the prefix "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"feat/"}]},{"type":"text","value":" followed by a the feature name. Multiple words may only be linked with hyphens ("},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"-"}]},{"type":"text","value":")."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A Bugfix branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be named using the prefix "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"fix/"}]},{"type":"text","value":" followed by a short (2-3 words at best) description. Words may only be linked with hypens ("},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"-"}]},{"type":"text","value":")."}]}]},{"type":"element","tag":"h3","props":{"id":"naming-version-branches"},"children":[{"type":"text","value":"Naming version branches"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" always describes the currently developed version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If a project is only ever going to have one version (for the foreseeable future)\nthe "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch is used synonymous with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1.x"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When a new version of the project is developed, the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be\nrenamed to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1.x"}]},{"type":"text","value":". A new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be created, which would then\ncorrespond to the version "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"2.x"}]},{"type":"text","value":" in development."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The version number for new releases is to be adjusted accordingly."}]}]},"public":true,"body":{"type":"root","children":[{"type":"element","tag":"h1","props":{"id":"development-working-with-git--github"},"children":[{"type":"text","value":"Development: Working with Git & GitHub"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This document describes all Git related guidelines. Since "},{"type":"element","tag":"a","props":{"href":"https://github.com","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"GitHub"}]},{"type":"text","value":" is our preferred Git provider, GitHub-related guidelines may also be described here."}]},{"type":"element","tag":"h2","props":{"id":"gitflow-workflow"},"children":[{"type":"text","value":"Gitflow Workflow"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We rely on the basic principles of the "},{"type":"element","tag":"a","props":{"href":"https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Gitflow"}]},{"type":"text","value":" Workflow, with minor modifications.\nIn summary every project must follow these rules:"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Every project "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" have a "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"dev"}]},{"type":"text","value":" branch is required from the time the project is in production."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Features, Bugfixes and Hotfixes require their own branch, pull request and review."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The use of a "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"release"}]},{"type":"text","value":" branch is omitted."}]}]},{"type":"element","tag":"img","props":{"src":"/images/dev/gitflow.svg"},"children":[]},{"type":"element","tag":"h3","props":{"id":"releases"},"children":[{"type":"text","value":"Releases"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Every deployment to a production environment "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be based on a Git release "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"tag"}]},{"type":"text","value":"."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The release number "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be an incrementing version according to the branch."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"There "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"SHOULD"}]},{"type":"text","value":" be only one release per day."}]}]},{"type":"element","tag":"h2","props":{"id":"branch-naming"},"children":[{"type":"text","value":"Branch naming"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The starting branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"The development branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be namend "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"dev"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A feature branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be named using the prefix "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"feat/"}]},{"type":"text","value":" followed by a the feature name. Multiple words may only be linked with hyphens ("},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"-"}]},{"type":"text","value":")."}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"A Bugfix branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be named using the prefix "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"fix/"}]},{"type":"text","value":" followed by a short (2-3 words at best) description. Words may only be linked with hypens ("},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"-"}]},{"type":"text","value":")."}]}]},{"type":"element","tag":"h3","props":{"id":"naming-version-branches"},"children":[{"type":"text","value":"Naming version branches"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" always describes the currently developed version."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If a project is only ever going to have one version (for the foreseeable future)\nthe "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch is used synonymous with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1.x"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"When a new version of the project is developed, the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be\nrenamed to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1.x"}]},{"type":"text","value":". A new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"main"}]},{"type":"text","value":" branch "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"MUST"}]},{"type":"text","value":" be created, which would then\ncorrespond to the version "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"2.x"}]},{"type":"text","value":" in development."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The version number for new releases is to be adjusted accordingly."}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"gitflow-workflow","depth":2,"text":"Gitflow Workflow","children":[{"id":"releases","depth":3,"text":"Releases"}]},{"id":"branch-naming","depth":2,"text":"Branch naming","children":[{"id":"naming-version-branches","depth":3,"text":"Naming version branches"}]}]}},"_type":"markdown","_id":"content:06.guidelines-internal:development-git.md","_source":"content","_file":"06.guidelines-internal/development-git.md","_extension":"md"}