Skip to content

Latest commit

 

History

History
86 lines (52 loc) · 4.05 KB

create_diffs_for_marking.md

File metadata and controls

86 lines (52 loc) · 4.05 KB

How to generate diffs for marking

This readme will walk you through the following:

  • Creating the Phabricator groups used for marking the project.
  • Creating diff files from Phabricator git repos.
  • Loading the diff files into Phabricator as 'Differential' revisions and assigning them to the correct marking groups.

Resources

The main README.md aims to exhaustively specify all of the commands you can run with prophessor. It is worth your time to read through it and understand what it's doing.

You should definitely read the info for the following commands:

Assumptions

This guide is assuming you have already done the following things:

  • Enrolled all your markers into Phabricator using prophessor's enroll command with a .csv of your student users.
  • Created all your groups in Phabricator using prophessor's create-student-groups command.
  • Enrolled all your markers into Phabricator using prophessor's enroll command with a .csv of your marker users.

Server Setup

All of these commands need to be run on the same machine which hosts Phabricator (ie, where the PHP files are).

I, the author, use docker to host Phabricator, therefore I must use the $ docker exec -it <container> /bin/bash command to get an interactive shell on the Phabricator server in order to run prophessor commands.

Inside my docker container, I have a shared volume with my host at /shared_volume. It is in this folder I store the prophessor repo and all related files (eg, csv files for students and markers and diff files). This is useful as sometimes I want to manipulate these files in the comfort of my host OS shell, instead of doing everything inside docker.

In the document, I am going to use my server setup in commands, hence why you will see the /shared_volume path in examples.

Walkthrough

Remember, everything needs to be done on the Phabricator server - for me, that's inside a docker container.

Make sure you pay attention to the output of the prophessor commands - they will tell you when things go wrong or it couldn't figure out who a diff belongs to.

1. Create Groups for Markers

$ cd /shared_volume
$ python proph.py create-marker-groups /shared_volume/students.csv /shared_volume/markers.csv 69

The '69' is the project number. Each time you have a sumbmission, it should have a unique project number. 69 is a silly number, for teh lols. If you have a mid-semester submission and a final end-of-semester submission, use project number '1' for the mid-semester submission and project number '2' for the end-of-semester submission.

The students.csv file is our source of truth for how many groups there are in this class.

The markers.csv file is used to allocate groups evenly and randomly (randomly-enough) between groups.

2. Generate Diffs

$ mkdir /shared_volume/folder_for_my_diffs
$ python proph.py generate-diffs 2012-09-01 /var/repo /shared_volume/folder_for_my_diffs

The folder you use for your diffs is arbitrary.

The date is the cut off point for commits. You will get a diff between the very first commit and the last commit before this date.

/var/repo is where Phabricator stores it's repositories. This is probably the same for you unless you set a different location.

3. Turn the Diff Files into Differential Revisions

Be careful running this command, each time you run it you will generate new Differential Revisions. You only want to run this once to avoid getting duplicates.

$ python proph.py load-diffs /shared_volume/folder_for_my_diffs 69

The '69' is the project number again. Make sure it matches the one you used in the create-marker-groups command earlier in this walkthrough.

4. ....

5. Profit

You should be done now! Make sure you noted any diffs which had issues so you can follow them up manually.