Downloads student project repositories for further evaluation. Also:
- checks for files at specified locations
- analyzes version histories
- opens version history URLs in a browser for further inspection
- Git
- Anaconda 3.7
- Python 3.7
- Pip
Install source code:
git clone git@github.com:prof-rossetti/repo-evaluator-py.git
cd repo-evaluator-py/
Create and activate a new virtual environment:
conda create -n repo-eval-env python=3.7 # first time only
conda activate repo-eval-env
Install package dependencies:
pip install -r requirements.txt
Populate db/submissions.csv
with entries like the following:
github_username, repository_url
user123, https://github.com/user123/some-repo
user456, https://github.com/user456/another-repo-py/tree/my-branch
"partner1, partner2, partner3", https://github.com/partner2/group-repo
NOTE: The only required header here is
repository_url
NOTE: All repository urls are assumed to be valid. It's ok if they point to certain branches (i.e. urls with "
repo_name
/tree/branch_name
")
Download all the repos:
python app/repo_downloader.py # this will populate the `repos` directory!
Populate the db/files_expected.csv
file with a list of files and/or directories each repository should contain, for example:
filepath
.env.example
LICENSE
README.md
products_app/app.py
products_app/db/products_default.csv
tests
Analyze contents of each repo to detect presence of files at specified locations:
python app/file_checker.py # this will write a report to `db/file_checks.csv`
View in a browser the version history of each repo:
python -m app.history_viewer
Populate the db/authors_excluded.csv
to exclude professor commits in starter repos:
author_name
Polly Professor
Tommy TA
Populate the db/users_authors.csv
file to specify a GitHub username for each non-username author name, so commits by the same username under different author names will be rolled-up into the same username:
username, author_name
user123, First User
user456, Nickname Lastname
user456, Fullfirst Lastname
user789, Firstname
Analyze the version history for each repo:
python -m app.history_checker # this will write a report to `db/histories_checked.csv`
Run tests for each submission separately:
for dir in ~/Desktop/grading-your-dir-here/*; do (cd "$dir" && pwd && pytest && cd ..); done
# with sleep:
for dir in ~/Desktop/grading-cleanup/*; do (cd "$dir" && pwd && pytest && cd .. && sleep 5); done
Run tests:
pytest tests/ # specify filepath to exclude tests from downloaded repos