Scoring, Autograding, and Git Submission | CS61B Fall 2019
Author: P. N. Hilfinger

A. Submitting Your Work

To submit an assignment (e.g., proj1), just tag it in your local repository and push the tags, using the assignment name suffixed by -N as the tag, for N a unique integer (e.g., proj1-1). The entire procedure is

    $ git status    # Check that you have committed all desired files.
                    # Use 'git add' and 'git commit -a' if not.
    $ git tag proj1-1   # Example of creating a tag.
    $ git push
    $ git push --tags

You should see a message including (for this example):

    remote: *** Assignment proj1 submitted.

If you do not see this line, YOU HAVE NOT SUBMITTED YOUR WORK!!!

If you have already made several submissions (e.g., proj1-1, proj2-2) and wish instead to resubmit a previous submission (e.g., proj1-1) in place of the latest one, simply choose still another new tag and make it label the same commit as the previous tag you wish to substitute:

    $ git tag proj1-3 proj1-1
    $ git push --tags

B. Submission Times

Tags refer to commits (they're sort of like pointers in this respect), and the time of a submission is taken to be the time at which the tagged commit was created, and not the time the tag was created. Thus, the trick at the end of section A will cause proj1-3 to have the same time as proj1-1.

This is true in general. If you forget to tag and submit an on-time commit altogether, you can remedy the situtation without being penalized for lateness assuming you have committed the desired work. First, find the commit you want with

    $ git log

Each entry in the log shows a commit, like this:

    commit 3e0c1b12e7d4327d91aa6fb5a18d49e0001afd5c
    Author: Random Student <random42@berkeley.edu>
    Date:   Sun Oct 9 16:30:57 2016 -0700

        Working version of proj1.

Create a tag for it like this:

    $ git tag proj1-4 3e0c1b12

(you only need enough of the commit id to distinguish it from all others). Submit as usual:

    $ git push --tags

You can first check that this commit is what you want by checking it out:

    $ git checkout 3e0c1b12

After satisfying yourself that this commit is what you intended, be sure to return to your normal branch with

    $ git checkout master

(Otherwise, you will be in "detached HEAD state" and any further committing and pushing is likely to cause grief.)

C. Reading the Glookup Results Page

The "Scores" tab on the website produces the "Glookup Results" page. The first section (Scores) shows any grades that have been entered for assignments whose due date is past. An entry of the form "---/..." indicates an assignment that is not yet graded or for which we have received no submission.

The second section (Electronic submissions received) lists the assignments for which we have received submissions (the ones you have committed, pushed, tagged, and pushed tags.)

Click on an assignment to see the details of submissions we've received. Generally, these will show a tag of the form submit/proj1-1 in the Tag column. The submit/... tags are internally generated by our software; you'll see them in your local repository when you fetch or pull from the central repository, but you should not try to create any tags of that form yourself. These tags are numbered sequentially in the order the central repository receives new tags from you; the numbers generally bear no relationship to the numbers you chose. The Commit Date column shows the time at which the tagged commit was created, not the time at which you tagged or pushed that commit. The Grading Logs column shows any results from our autograder (if we have one running for that assignment). You can click on the "[Log]" entries to see the output from the autograder. Finally, the Notes column indicates when a commit is late or whether one tag labels the same commit as another.

The "[Log]" entries may change if we modify and re-run the autograder tests. However, we generally try to avoid this after the assignment deadline.