Skip to content

Development manual

Fredrik Olovsson edited this page Nov 28, 2017 · 3 revisions

Using Git and Github (checklist)

The aim of this workflow is to

  • Reduce bugs in conflict situations
  • Keep the commit history clean
  • Spread knowledge and increase code quality through reviews

Development

  • Make a new branch from latest master and name it {developerFirstName}/{descriptive-branch-name} e.g. anton/fix-catalog-number-validation
  • Do development
  • Test (manual and/or automatic)
  • Commit changes to that branch
    • Write concise and descriptive commit messages:
    • Start with a verb
    • Use present tense (e.g. “Rename X”, not “Renamed X”)
  • Push to Github
  • Do a merge request (= pull request)
    • Do this on github, add comment describing what you did if needed
    • Assign to someone to review
    • Notify reviewer on Slack

Review

  • Review with a focus on architecture, bugs and naming improvements.
  • Add comments and request changes as needed. If no changes needed, jump to step "Merge to master"
    • Developer makes improvements as new commits, naming the commit with "fixup! {old commit message}"
    • Developer notifies reviewer again
    • Reviewer comments or approves and notifies developer
  • Developer rebases branch to fixup change commits (the Developer also needs to rebase if some other branch is merged into master during the review)
    • Pull latest master
    • Rebase branch on master: git rebase -i master (optionally add the --autosquash option to automatically fixup commits prefixed with fixup! {old commit name}
    • If the rebase resulted in changes in the history, the remote branch can only be updated with a force push (add the -f flag to the push command). If someone else has a local version of that branch and wants to get the force pushed version, they need to do a hard reset of their branch against the origin: git reset --hard origin/{full-branch-name}. NOTE: This will remove any local changes you have in that branch!
  • Merge to master (in repos with Travis CI setup, this is only possible if the checks are passing and they always should, before merging)
  • Delete branch when merge is successful
You can’t perform that action at this time.