# Setup develop environments ## Git ### Git commit messages * [How to Write a Git Commit Message](https://cbea.ms/git-commit/) ### Git Flow * https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow ### Git commands * https://learngitbranching.js.org/ * http://onlywei.github.io/explain-git-with-d3/ ### Git hooks * https://www.atlassian.com/git/tutorials/git-hooks * Examples: * https://github.com/sysprog21/lab0-c/blob/master/scripts/pre-commit.hook * https://github.com/commaai/openpilot/blob/master/.pre-commit-config.yaml ## Coding Style * Find a auto formatter * clang-format * python-black * eslint * ... * Enforced it by git hook or editor (save and format) ## Kanban & Scrum * https://www.atlassian.com/agile/kanban * https://www.atlassian.com/agile ## The Computer Scientist as Toolsmith By Fred Brooks: https://www.cs.unc.edu/~brooks/Toolsmith-CACM.pdf Two of our criteria for success in a tool are: * It must be so easy to use that a full professor can use it, and * It must be so productive that full professors will use it.