-
Notifications
You must be signed in to change notification settings - Fork 12
Home
Ari Timonen edited this page Apr 30, 2018
·
13 revisions
- master branch has releases; kept stable
- develop branch has development commits; more unstable
- developers work on their own branches which are merged to develop
- release- branches are created from develop branch and merged to master
Developers pull develop branch, copy it to a new branch (eg. dev1guy-description-of-feature). When feature or bugfix is done, create a pull request from the new branch to the develop branch. The new branch is then rebased on top of develop branch and then merged to the develop branch, the new branch is removed and the pull request is closed.
In terms of commands it is something like.
git clone [email protected]:ENSL/NS.git
git checkout develop
git checkout -b dev1guy-new-movement develop
- (add changes to files)
git commit -a
git push origin dev1guy-new-movement
- (optional step:
git rebase develop
in case develop has new changes after creating the branch) - (go to website and create a pull request from new branch to develop)
The idea here of both rebase and pull request is to keep the git history clean but create a merge so commit history has link to Github's pull request.
When develop branch is ready for release, we create a release branch from develop, merge to master, and tag the merge commit with a version. Release is created through the website.
- No binary blobs to the git tree
- No temporary or backup files
- Do not include extra libraries unless absolutely necessary
- Use LF line endings (Linux-style) in repository. Then git can checkout Windows-style (CRLF) when it needs them and commit LF line endings back to repo. This should be transparent to the developer. The .gitattributes and .gitignore files have been configured to enforce this style.