a5d01788a9
This change introduces a new prolog fact for the number of unresolved comments. This fact can be further used by some prolog rules to block the submission of changes with some unresolved comments. A new example is also added to the prolog cookbook to show how to use this new fact. Change-Id: Iadc48f0758137b0071484265c22ebcb9bc2d2b26
114 lines
4.5 KiB
Plaintext
114 lines
4.5 KiB
Plaintext
= Prolog Facts for Gerrit Changes
|
|
|
|
Prior to invoking the `submit_rule(X)` query for a change, Gerrit initializes
|
|
the Prolog engine with a set of facts (current data) about this change.
|
|
The following table provides an overview of the provided facts.
|
|
|
|
[IMPORTANT]
|
|
All the terms listed below are defined in the `gerrit` package. To use any
|
|
of them we must use a qualified name like `gerrit:change_branch(X)`.
|
|
|
|
.Prolog facts about the current change
|
|
[grid="cols"]
|
|
[options="header"]
|
|
|=============================================================================
|
|
|Fact |Example |Description
|
|
|
|
|`change_branch/1` |`change_branch('refs/heads/master').`
|
|
|Destination Branch for the change as string atom
|
|
|
|
|`change_owner/1` |`change_owner(user(1000000)).`
|
|
|Owner of the change as `user(ID)` term. ID is the numeric account ID
|
|
|
|
|`change_project/1` |`change_project('full/project/name').`
|
|
|Name of the project as string atom
|
|
|
|
|`change_topic/1` |`change_topic('plugins').`
|
|
|Topic name as string atom
|
|
|
|
|`commit_author/1` |`commit_author(user(100000)).`
|
|
|Author of the commit as `user(ID)` term. ID is the numeric account ID
|
|
|
|
|`commit_author/3` |`commit_author(user(100000), 'John Doe', 'john.doe@example.com').`
|
|
|ID, full name and the email of the commit author. The full name and the
|
|
email are string atoms
|
|
|
|
|`commit_committer/1` |`commit_committer()`
|
|
|Committer of the commit as `user(ID)` term. ID is the numeric account ID
|
|
|
|
|`commit_committer/3` |`commit_committer()`
|
|
|ID, full name and the email of the commit committer. The full name and the
|
|
email are string atoms
|
|
|
|
.2+|`commit_label/2` |`commit_label(label('Code-Review', 2), user(1000000)).`
|
|
.2+|Set of votes on the last patch-set
|
|
|
|
|`commit_label(label('Verified', -1), user(1000001)).`
|
|
|
|
|`commit_message/1` |`commit_message('Fix bug X').`
|
|
|Commit message as string atom
|
|
|
|
|`commit_stats/3` |`commit_stats(5,20,50).`
|
|
|Number of files modified, number of insertions and the number of deletions.
|
|
|
|
.4+|`current_user/1` |`current_user(user(1000000)).`
|
|
.4+|Current user as one of the four given possibilities
|
|
|
|
|`current_user(user(anonymous)).`
|
|
|`current_user(user(peer_daemon)).`
|
|
|`current_user(user(replication)).`
|
|
|
|
|`uploader/1` |`uploader(user(1000000)).`
|
|
|Uploader as `user(ID)` term. ID is the numeric account ID
|
|
|
|
|`unresolved_comments_count/1` |`unresolved_comments_count(0).`
|
|
|The number of unresolved comments as an integer atom
|
|
|=============================================================================
|
|
|
|
In addition Gerrit provides a set of built-in helper predicates that can be used
|
|
when implementing the `submit_rule` predicate. The most common ones are listed in
|
|
the following table.
|
|
|
|
.Built-in Prolog helper predicates
|
|
[grid="cols"]
|
|
[options="header"]
|
|
|=============================================================================
|
|
|Predicate |Example usage |Description
|
|
|
|
|`commit_delta/1` |`commit_delta('\\.java$').`
|
|
|True if any file name from the last patch set matches the given regex.
|
|
|
|
|`commit_delta/3` |`commit_delta('\\.java$', T, P)`
|
|
|Returns the change type (via `T`) and path (via `P`), if the change type
|
|
is `rename`, it also returns the old path. If the change type is `rename`, it
|
|
returns a delete for old path and an add for new path. If the change type
|
|
is `copy`, an add is returned along with new path.
|
|
|
|
Possible values for the change type are the following symbols: `add`,
|
|
`modify`, `delete`, `rename`, `copy`
|
|
|
|
|`commit_delta/4` |`commit_delta('\\.java$', T, P, O)`
|
|
|Like `commit_delta/3` plus the old path (via `O`) if applicable.
|
|
|
|
|`commit_edits/2` |`commit_edits('/pom.xml$', 'dependency')`
|
|
|True if any of the files matched by the file name regex (first parameter)
|
|
have edited lines that match the regex in the second parameter. This
|
|
example will be true if there is a modification of a `pom.xml` file such
|
|
that an edited line contains or contained the string `'dependency'`.
|
|
|
|
|`commit_message_matches/1` |`commit_message_matches('^Bug fix')`
|
|
|True if the commit message matches the given regex.
|
|
|
|
|=============================================================================
|
|
|
|
[NOTE]
|
|
For a complete list of built-in helpers read the `gerrit_common.pl` and
|
|
all Java classes whose name matches `PRED_*.java` from Gerrit's source code.
|
|
|
|
GERRIT
|
|
------
|
|
Part of link:index.html[Gerrit Code Review]
|
|
|
|
SEARCHBOX
|
|
---------
|