/repobee

CLI tool for managing Git repositories on GitHub and GitLab

Primary LanguagePythonMIT LicenseMIT

RepoBee Logo

Build Status Code Coverage Documentation Status PyPi Version Supported Python Versions Supported Platforms License Code Style: Black

Overview

RepoBee is a command line tool that allows teachers and teaching assistants to work with large amounts of student Git repositories on the GitHub, GitLab and Gitea platforms (cloud and self-hosted). The archetypical use case is to automate creation of student repositories based on template repositories, that can contain for example instructions and skeleton code. Given any number of template repositories, creating a copy for each student or group is just one command away. RepoBee also has functionality for updating student repos, batch cloning of student repos, opening, closing and listing issues, no-blind and double-blind peer review, and much more!

In addition, RepoBee features a powerful plugin system that allows users to either use existing plugins, or write their own. Plugins can do a wide range of things, including making RepoBee compatible with multiple hosting platforms (GitHub, GitLab, Gitea), providing compatibility with repositories managed by GitHub Classroom, or running JUnit4 test classes on cloned student repositories.

Still not quite sure what RepoBee actually does? The demo video below briefly explains some of the most important concepts, and showcases how RepoBee can be used to setup and clone student repositories, as well as how to write a simple plugin.

repobee-demo-low-quality.mp4

Short video demonstration of using RepoBee and writing a simple plugin. For a higher-quality version of this demo, click this link!

Feature highlights

RepoBee has a lot going for it. Here are some of the things we are most proud of:

  • Compatible with GitHub, GitLab and Gitea: No platform lock-in!
  • Support for group assignments (multiple students per repository)
  • No-blind and double-blind peer review, directly on the hosting platform
  • Generate, clone and update student repositories based on templates
  • Open, close and list issues
  • Extend and customize RepoBee with the plugin system
  • Very little configuration required on the Git service platform side
    • The only requirement is to have an Organization/Group with private repository capabilities!
  • No local configuration required

For a full list of RepoBee's built-in (i.e. non-plugin) features, see the user guide and CLI reference.

Getting started

First, either install RepoBee or grab the Docker image. Then, start exploring the Docs, where you (among other things) will find the user guide. It covers use of RepoBee's various commands by way of practical example, and should set you on the right path with little effort.

We also provide a Gitea test instance for playing around around with RepoBee in an environment where messing up has no consequence. See the RepoBee Gitea docs for details on how to use RepoBee with Gitea.

Install

We provide an install script that sets up an isolated and correctly configured environment for RepoBee, granted that you have Python 3.9+ and Git installed. The script supports macOS, Linux and Windows Subsystem for Linux (WSL). You can execute it directly using curl, with either bash or zsh.

IMPORTANT: If you use any other shell than bash or zsh, you must still execute the install script with one of them.

$ bash <(curl -s https://repobee.org/install.sh)
$ zsh <(curl -s https://repobee.org/install.sh)

For additional details, please see the install docs.

Docker

We offer a fully featured Docker image that can be used instead of installing RepoBee.

Versioning

As of December 17th 2018, RepoBee's CLI is a stable release and adheres to Semantic Versioning 2.0.0. The internals of RepoBee do not adhere to this versioning, so using RepoBee as a library is not recommended.

The plugin system is mostly stable as of RepoBee 3.0, but there is a slight risk of breakage due to unforeseen problems. If you develop a plugin, please get in touch so that can be taken into consideration if breaking changes are introduced to the plugin system.

License

This software is licensed under the MIT License. See the LICENSE file for specifics.

Citing RepoBee in an academic context

If you want to reference RepoBee in a paper, please cite the following paper:

Simon Larsén and Richard Glassey. 2019. RepoBee: Developing Tool Support for Courses using Git/GitHub. In Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE '19). ACM, New York, NY, USA, 534-540. DOI: https://doi.org/10.1145/3304221.3319784