Management

This document describes the myriad administrative commands available with Patchwork. Many of these commands are referenced in the development and deployment installation guides.

The manage.py Script

Django provides the django-admin command-line utility for interacting with Django applications and projects, as described in the Django documentation. Patchwork, being a Django application, provides a wrapper for this command - manage.py - that exposes not only the management commands of Django and its default applications, but also a number of custom, Patchwork-only management commands.

An overview of the Patchwork-specific commands is provided below. For information on the commands provided by Django itself, refer to the Django documentation. Information on any command can also be found by passing the --help parameter:

./manage.py cron --help

Available Commands

cron

./manage.py cron

Run periodic Patchwork functions: send notifications and expire unused users.

This is required to ensure notifications emails are actually sent to users that request them and is helpful to expire unused users created by spambots. For more information on integration of this script, refer to the deployment installation guide.

dumparchive

Export Patchwork projects as tarball of mbox files.

./manage.py dumparchive [-c | --compress] [PROJECT [PROJECT...]]

This is mostly useful for exporting the patch dataset of a Patchwork project for use with other programs.

-c, --compress

compress generated archive.

PROJECT

list ID of project(s) to export. Export all projects if none specified.

parsearchive

Parse an mbox archive file and store any patches/comments found.

./manage.py parsearchive [--list-id <list-id>] <infile>

This is mostly useful for development or for adding message that were missed due to, for example, an outage.

--list-id <list-id>

mailing list ID. If not supplied, this will be extracted from the mail headers.

infile

input mbox filename

parsemail

Parse an mbox file and store any patch/comment found.

./manage.py parsemail [--list-id <list-id>] <infile>

This is the main script used to get mails (and therefore patches) into Patchwork. It is generally used by the parsemail.sh script in combination with a mail transfer agent (MTA) like Postfix. For more information, refer to the deployment installation guide.

--list-id <list-id>

mailing list ID. If not supplied, this will be extracted from the mail headers.

infile

input mbox filename. If not supplied, a patch will be read from stdin.

rehash

Update the hashes on existing patches.

./manage.py rehash [<patch_id>, ...]

Patchwork stores hashes for each patch it receives. These hashes can be used to uniquely identify a patch for things like automatically changing the state of the patch in Patchwork when it merges. If you change your hashing algorithm, you may wish to rehash the patches.

patch_id

a patch ID number. If not supplied, all patches will be updated.

retag

Update the tag (Ack/Review/Test) counts on existing patches.

./manage.py retag [<patch_id>...]

Patchwork extracts tags from each patch it receives. By default, three tags are extracted, but it’s possible to change this on a per-instance basis. Should you add additional tags, you may wish to scan older patches for these new tags.

patch_id

a patch ID number. If not supplied, all patches will be updated.