Proposed new tool for teaching/assessing git skills

Hi all,

I am considering developing a tool and then doing associated research on it, to support teaching git. The idea will be that teachers can set an exercise in which students will follow a series of steps on a repo or create a repo that confirms a description. The tool will be able to automatically assess (grade) whether the student has correctly done this.

For example - the instructions may be:

  1. Move file X from directory Y to Z and commit.
  2. Make 5 consecutive changes to file A and commit each change.
  3. Merge the changes to file B in branch C into master.
  4. etc
  5. Push your commits to Github

The tool would then analyse the git repository and logs to determine which of the steps have been corrected executed. It could possibly be configured to award a score for each step and calculate a final grade.

My hope is that teachers can describe the desired outcome in a readable configuration file e.g.

{  results: [
   {"rule": "file-exists", "location": "subfolder/file-a.txt", "score":1, "feedback": "An expected file was not commited"},
   {"rule": "file-exists", "location": "subfolder/new-file.txt", "score":1, "feedback": "An expected file was not commited"},
   {"rule": "file-not", "location": "orig-folder/file-a.txt", "score":1, "feedback": "A file was there that shouldn't be"},
   {"rule": "commit-count", "file": "file-to-edit.txt", "score":2, count:3 "feedback": "There should have been a number of commits to a file"}]

For practice, students could be given the tool and a configuration file and allowed to work on their repo until all of the rules pass. Or else the students could be given the instructions without the config file, and it could be used for summative assessment.

Would this be useful to anyone, does anyone have any further ideas, or are you aware of existing similar tools?



Despite the luke-warm reception :wink: , I’ve created a prototype of this.

My next step will be to create a example exercise to show teachers who this could be used to make learning git into more of a guided, problem-solving, active-learning experience.


:+1: love the idea!

Great idea!

I am planning a 4 hour course about github for graduate students.

If it is possible, I will definitely use your tool for assessment!

I’ve created a first (very simple) exercise using this tool. Just clone and following the instructions in README.MD.

The idea would be that students could do these examples to gain confidence in git, and then potentially complete an exercise without the rules file, which would then by used by the teacher to grade the work.

Next steps are to create more rules and examples to build up more complete exercises. If anyone has any ideas or thoughts please let me know.

Hi all

I’ve made some progress on this that I’m pretty proud of. We can now created exercises that cover adding, committing, branches, moving, removing, ignoring. You can also allocate scores to each test so and show the student a final score. It also allow you to create and edit files when the tool is first run so that you can set up issues for the student to deal with.

The best way to check this out is to clone and run some of the exercises. The exercises and instructions are all here -

Please give it a go and let me know which issues you find (it’s not yet very tolerant of errors in the rules file). I’m excited about using this with my students. Here’s an example output from a partially complete exercise.


I think this is a great idea. Thanks for sharing! I’ll be watching to see what other useful updates come along.

Great idea! Thanks for taking the time to work on this. It would definitely be useful in some of my classes.

@joannakl @JRiouxMath @zhangyin-github

Hi all, a quick update on whether this tool was successful in teaching git. Overall this was very successful. Below is a list of things that happened or I noted.

I’m really keen to support anyone else in using this in their teaching. At the moment it seems like a teaching unicorn - something that students like, teaches well while reducing the workload of a teacher.

  1. Students mostly-happily completed exercises within classrooms and in their own time to learn hit.
  2. I conducted an in-class test where students completed an exercise that was automatically marked by the tool. I was able to sent students feedback in the form of a list of which steps they passed or didn’t (see below)
  3. Students volunteered to create their own exercises which they then shared with other students to practice on.
  4. The grades for the git element of the module were much higher than in previous years.
  5. I’m anonymously surveying students at the moment with positive feedback. e.g. “I find this method of learning git to be fantastic in terms of helping with memorising the module content. I feel that it could be improved by making it clear how a beginner would redo the exercises, which would make the worksheet even more useful in learning. Other than this, I feel that gitruler really contributed a lot to my git skill development, and I hope to see it continue to be implemented within this module.”


What am I doing wrong?

I just cloned your repository, downloaded gradle and run gradle build. The built failed with lots of warnings and errors. Here are the first few “FAILED” messages:

gitruler.GitFunctionsTest > wasPathUpdatedInFirstCommitFailTest FAILED
    java.lang.NullPointerException at

gitruler.GitFunctionsTest > getFileContentsValidTreeTest FAILED
    java.lang.NullPointerException at

gitruler.GitFunctionsTest > getContentsOfFileInCommitTest FAILED
    java.lang.NullPointerException at

gitruler.GitFunctionsTest > getTreeIdFromPathTest FAILED
    java.lang.NullPointerException at

gitruler.GitFunctionsTest > getBranchRefExistsTest FAILED
    java.lang.NullPointerException at

gitruler.GitFunctionsTest > wasPathUpdatedInCommitSimpleTrueTest FAILED
    java.lang.NullPointerException at

I am not familiar with gradle builds, so I am not sure how I should be building the jar file.


You an build the jar by running gradle clean fatJar

However, you can also download the latest jar from here -

Let me know if you have any problems. I used this for an undergraduate class this year and it was extremely successful!

Thanks. I was able to get it working with the downloaded file.
I am going to direct students who are beginners at git to your exercises for self-paced learning and evaluation.