Version Control
We will be asking you to work in pairs this semester. An essential skill for any sort of coding collaboration is the ability to work with version control systems.
In 552, we will use git a modern open source distributed version control system, and store our repositories on github. Below are instructions to set everything up. Once you have done so, we will double check that you have it correctly configured.
How to set everything up
Install git on your machine.
Create an account on github if you do not already have one.
Note your github username. For example, mine is sweirich. We will ask you for it at the beginning of the semester.
To work with a public repository in the cis552 organization, you should create your own "Fork" into your account (see the button in the upper right hand corner) and then clone that forked repository to your local machine.
For the homework, we will be creating private teams and repositories in the "cis552" organization for you to use for your homework assignments. If you cannot access your repository, you'll need to first accept your invitation from the cis552 organization.
Optional: Set up ssh so you don't have to type your password each time you use git.
Optional: If you would like to create your own repository you may do so. If you plan to use this repository for course material, make sure that it is Private and that you initialize the repository with a README. Once the repo has been created, clone it to your local machine.
To get started using your repository, see the Git Basics part of the git manual.
Why not just use Cloud Storage?
In terms of collaboration, version control systems are based on a repository of information about your project that is accessible by all committers. Every project participant has access to the current copy of the project that is stored in the repository---much in the same way that Google Drive, iCloud or Dropbox replicates your files across multiple machines.
However, version control has two differences from cloud storage. First, it allows local edits that are not immediately reflected on the server. This is important because you may want to try something out before making it available to your other team members.
Second, these systems provide versioning. They store all checkpointed versions of your code in the repository. That means you don't have to worry about making separate backups of versions that work before making changes---just commit. You will be able to roll back your local copy to any prior checkpoint.