tgbugs / prrequaestor

pull request automation

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

prrequaestor

A quaestor for pull requests.

Have a process that needs to be audited for changes?

Use prrequaestor to automatically create pull requests for easy review and visibility.

Overview

We want to automatically synchronize changes from a variety of data sources to a git repo so that other people can review them.

sync-specs

prrequaestor needs to be provided with the path to a file containing the specifications for the sync processes that you want to run, along with the repos, branches, etc. that you want to run them on. By default prrequaestor looks for a file in *default-pathname-defaults* with the name sync-specs.lisp. It also accepts --specs as a cli option.

Workflow

The parts of the workflow for prrequaestor.

(sync repo@state-n) -> repo@state-n+1
(branch auto repo@state-n+1) -> repo@auto
(push repo@auto remote@auto)
(pull-request forge remote@auto upstream@leaf)

The components are

  • repositories repo, remote, and upstream
  • repository states state-n, and state-n+1
  • repository state histories leaf, and auto
  • processes sync, branch, push, and pull-request
  • shared collaboration spaces forge

We want to run a process to sync the state of a local repo so that it reflects external changes.

Running sync transforms the repo from state-n to state-n+1.

We want other people to review changes in the forge.

Therefore we branch a new history from leaf at commit-n to auto at state-n+1 and push repo@auto to remote@auto.

Finally we pull-request from remote@auto to upstream@leaf.

Note that remote and upstream may be the same repository.

Implementations

Common Lisp

The maintained implementation. SBCL with save-lisp-and-die provides a better environment for scripting and interaction with the many other runtimes that actually carry out the transformations on git repositories.

The Common Lisp impl is licensed under the MIT license.

Emacs Lisp

The initial prototype implementation was in elisp, but due to the complexity of the setup and due to bugs in Emacs with threads and processes that I originally discovered working on this project and have not had time to resolve, the CL implementation is now the primary implementation.

The Emacs Lisp impl is licensed under the GPL-3.0-or-later license.

License

  • Common Lisp MIT
  • Emacs Lisp GPL-3+

About

pull request automation

License:MIT License


Languages

Language:Common Lisp 69.3%Language:Emacs Lisp 30.7%