Skip to content

Source Control Milestone

Due Date

Due Date: October 24
Grading: Individual

Lectures

You must watch the Git and Github lecture before working on this milestone.

Description

The goal of this milestone is to ensure everything is set up correctly, and the whole team has started working together on their app using a shared codebase, with everything in git. The codebase does not need to do much, but it should at least include your framework. For example, if you are building an Android app then the codebase should be an Android app.

By this date you should have

  1. Setup your github email correctly. Your most recent commits do not show a grey octocat avatar in github.

  2. Have a shared git repo in github,

  3. The code in the repo builds, something.

  4. Every team member can check out the code, build it, and run it on their laptop.

  5. Every team member has made a change to the code and pushed it to github.

  6. Every team member has pulled in changes from other members.

  7. Every team member has experienced and resolved a merge conflict.

For the merge conflict just have someone else in the time change some line in the code and push it. Then, before you pull, make sure you change that same line (to something else) and commit it. Then try to pull. You will see a merge conflict. Resolve it. Commit your changes. Push.

From here on out everyone in the team will be using git as part of their workflow. Remember, your final grade is largely based on your git commit log . It shows us everything you did.

Readme

Your project should have a Readme.md on the root directory. For this class the Readme is written for other developers, not for your end users. Namely , it should be written so that the TAs and I have all the information need to compile and run your code, but also so you can do so again when you have to re-do everything on your new laptop.

Below is a template for a good Readme.md:

# Project Name

This first paragraph should be a short description of the app. You can add links
to your wiki pages that have more detailed descriptions.

Your audience for the Readme.md are other developers who are joining your team.
Specifically, the file should contain detailed instructions that any developer
can follow to install, compile, run, and test your project. These are not only
useful to new developers, but also to you when you have to re-install everything
because your old laptop crashed. Also, the teachers of this class will be
following your instructions.

## External Requirements

List all the stuff the reader will need to install in order to get you app to 
run in their laptop. For example:

In order to build this project you first have to install:

* [Node.js](https://nodejs.org/en/)
* [MongoDB](https://www.mongodb.com/)

If possible, list the actual commands you used to install these, so the reader
can just cut-n-paste the commands and get everything setup.

You only need to add instructions for the OS you are using.

## Setup

Here you list all the one-time things the developer needs to do after cloning
your repo. Sometimes there is no need for this section, but some apps require
some first-time configuration from the developer, for example: setting up a
database for running your webapp locally.

## Running

Specify the commands for a developer to run the app from the cloned repo.

# Deployment

Webapps need a deployment section that explains how to get it deployed on the 
Internet. These should be detailed enough so anyone can re-deploy if needed
. Note that you **do not put passwords in git**. 

Mobile apps will also sometimes need some instructions on how to build a
"release" version, maybe how to sign it, and how to run that binary in an
emulator or in a physical phone.

# Testing

In 492 you will write automated tests. When you do you will need to add a 
section that explains how to run them.

The unit tests are in `/test/unit`.

The behavioral tests are in `/test/casper/`.

## Testing Technology

In some cases you need to install test runners, etc. Explain how.

## Running Tests

Explain how to run the automated tests.

# Authors

Your names and emails

.gitignore

Make sure your repo has a good .gitignore file. Most frameworks will automatically build one for you when you create a project, but you usually need to add more things to it. gitignore.io is a good place to find gitignore rules.

Coding Style Guide

Since you are about to start coding as a team, it is useful if your team also chooses a style guide to follow. You can choose one of Google's style guides, or find a different one. Add a link to your chosen guide from your Readme.md.

Most modern IDEs will automatically format your code to fit a chosen style, for example, this is how you do it in WebStorm. Learn to use your IDE.

Working Together Online

Everyone must write their own code, and make significant code contributions in this class.

But, you should also help each other as you code. You do this via your chosen chat application. Also, modern IDEs make it super easy to code together, checkout Code With Me: for JetBrains and CodeTogether: for VS Code, among others.

Deliverables

You have to be able to

  1. pull from the shared repo,
  2. build,
  3. run application locally (laptop or emulator)
  4. commit to shared repo,
  5. push to the shared repo,
  6. merge your branch into master, via pull request or regular merge,
  7. and resolve a merge conflict.

Use Your IDE

Commits done on the github.com website do not count (but, do use Pull Requests). Practice by doing all the commits from your IDE.

A Pull Request is not a Merge

A Pull Request is a webpage at GitHub.com on which users can write comments and other stuff. A merge in git is a commit that merges two different branches.

Grading Rubric

Grade is 100 minus the total points lost, with minimum of 0. See grading scale in Syllabus. Points lost are:

Deliverable Points lost if you don't deliver
Username appears in git log on github repo. 100
Git/github email setup correctly to match. 50
Can build and run code on laptop. Show during our meeting, if I ask you to 100
User has Merge commit (two parents) in github log. 30
Has resolved a merge conflict (we can't actually check this AFAIK, so we will have to trust you did it) 30
Missing Readme 20