Implementation
Project artifacts will reside in a Git repository, which provides permanent record of all changes. The basic workflow is
- fork the project repository,
- clone your fork,
- create a branch for you changes,
- make changes,
- commit the changes to the repository, and
- create a pull request for those changes.
If you aren’t comfortable with Git, then Pro Git is an excellent resource that not only walks through its basic use but also goes into considerable depth on its internals.
When committing anything to the repository, remember that each “logical change” should appear in its own commit. A logical change may be a complete specification, the cleanup of existing source code (e.g., reformatting it to follow an agreed-upon coding standard), or the addition of a feature. In general, the following should be avoided:
- Mixing functional and non-functional changes
- Create separate commits for the non-functional change (e.g., code cleanup) and the functional change; starting with the former ought to simplify the latter.
- Mixing two unrelated functional changes
- Break the changes apart into separate commits.
- Having a giant commit for a feature
- Start with the minimum functionality that provides business value (i.e., value to the end user) and add capabilities incrementally.
- Mingling auto-generated with hand-written code
- Often a gotcha when using web frameworks, clearly delineate the project initialization (e.g., the scaffolding provided by the framework) from its project-specific modifications to aid with review.
Typically this means that each commit has fewer than 200 lines of changes. Why is this limit important? Larger commits are more difficult to review, increasing the likelihood of mistakes. In addition, knowing the context for the change (e.g., who changed the line and why it was modified) is often critical to maintain the system’s functionality during later refactoring.
To “submit” your implementation changes, create a pull request against the instructor’s repository. That action will trigger a review of the proposed changes so that you receive feedback and have an the opportunity to address any questions or issues.