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.
We want to automatically synchronize changes from a variety of data sources to a git repo so that other people can review them.
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.
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
, andupstream
- repository states
state-n
, andstate-n+1
- repository state histories
leaf
, andauto
- processes
sync
,branch
,push
, andpull-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.
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.
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.
- Common Lisp MIT
- Emacs Lisp GPL-3+