git in CS 421
git will be used throughout this semester as the version control system for
MPs. Specifically, we will be using git for two functions:
- Distribution of provided code.
- Distribution of grades.
You will not use
git for turning things in; you will use
PrairieLearn for that.
On the other hand, having your code in
git will make it very easy
to share your code with the instructional staff if you need help,
and it automatically serves as an off-site backup.
While we do not require that you learn and use good version control practices, we cannot stress enough how useful a good version control system can be when good practices are used. The following is a brief list of good version control practices:
- Always use a good commit message which describes the changes in the commit.
- Never check in broken code. (This is more important when working in groups, but still good practice.)
- Commit regularly and frequently. For example, commit when you’re done writing a function. This allows both simpler commit messages and greater confidence in the repository.
Again, the above practices are not hard and fast, nor complete, but they should
help you complete your MPs and future coding projects should you use
them as well.
Setting up git
There are two repositories that you’ll be interacting with as part of this course:
- Your personal course repository
- The release repository (
In general, code will be released to
_release and you will merge it into your
repository to get the initial code. You’ll then complete the MP or lab and then
commit your code to your repository. We will view the latest submission you made
before the due date to grade your work.
To get everything set up, there are certain things you will need to setup once the entire time you’re in the course, things you need to setup once per computer you use, and things you need to do once per MP.
Course Setup (necessary only once for the entire semester)
The first time you’re accessing the CS 421 repository this semester, you will need to have a CS 421 repository set up for you. This process is simple:
- Visit the github create link
- When you view your repostiory, do not follow the instructions to create a README. Instead, just note the URL — it will be similar to
Workspace Setup (necessary only once per computer/directory you use)
Create a clone of your repository
To setup your computer to work on an MP or a lab, you will need to clone your repository onto your comptuer.
The URL of your repository will be based on your NetID and you will need to replace NETID with your NetID.
To clone your repository, run
git clone https://github-dev.cs.illinois.edu/cs421-su20/NETID.git cs421git
you can replace
cs421git with whatever folder you want created. For example, you may want to call your folder just
cs421work or anything else.
On some systems, git (and other command line programs) will not display anything when you type your password. This is expected: type your password as normal, and then hit enter.
Finally, move into the directory you just cloned:
_release repository as a remote
To connect to the release repository, you need to add a remote:
git remote add release https://github-dev.cs.illinois.edu/cs421-su20/_release.git
You’re now all set to begin to work on an assignment! :)
Assignment Setup (necessary only once per assignment)
To retrieve the latest assignments for CS 421, you need to
release repository into your repository. This can be done with two commands:
git fetch release git merge release/MP_NAME -m "Merging release repository"
MP_NAME literally here; on each lab we will provide the proper name to use.
git happens to complain about unrelated histories, use this command:
git merge release/MP_NAME --allow-unrelated-histories
Assignment Submission (do this often!)
Well.. you aren’t actually submitting anything. But a remote
git repository serves as a wonderful backup tool. If something goes wrong and you delete
your local copy, you can always restore it from the remote repository. This is also a great way to enable the course staff to look at your code if you
need help debugging.
Every time you reach a milestone and want to checkpoint your work, you will need to
push your work to your git repository. This can always be done using the following commands on a command line while within your CS 421 directory:
git add -u git commit -m "file submission" git push origin master
Verify your Submission
You can always verify your “submission” by visiting https://github-dev.cs.illinois.edu/ and viewing the files in your repository.
We will also use
git for your grades. We will create a branch called
grades in your git repository. In this branch
will be a directory
grades, and in there will be two files
will contain detailed information, whereas
grades-summary.txt will only have high-level info.
To access it, you will run:
git fetch grades git merge grades
You should never check out the
grades repository; just merge the content into
master. If you check out
that repository and commit something to it, you will get merge conflicts next time we push something there
and you’ll have trouble getting to see your grades.