From Fedora Project Wiki

(explain develop/master difference and what to do on first run of 'arc diff')
(phabricator is discontinued)
Line 1: Line 1:
We use a tool called [ Phabricator] to manage our tickets and review commits. Our instance is available at:
QA instance of Phabricator has been discontinued.
Authentication uses the Fedora [[Account System]], so you do not need a separate account.
== Getting help ==
If you have any trouble using Phabricator, especially with filing issues or code changes (diffs), you can always get in touch with us for help! Please mail {{fplist|qa-devel}} or ask in {{fpchat|#fedora-qa}} and someone will likely be able to help you out.
== Filing issues ==
You can [ create a ticket] for us there (report a bug, suggest a feature) against [ one of our tracked projects] (including the [[Taskotron]] and [[ResultsDB]] components).
== Proposing code changes ('diffs') ==
In the Phabricator system, code changes (often called 'pull requests' in git terms) are referred to as 'diffs'. For the projects which track code changes in Phabricator, you can use a tool called {{code|arcanist}} to submit diffs.
{{admon/warning|Don't follow upstream instructions|Do not follow the upstream guide to install {{code|arcanist}}! This will install whatever code is in git and may not match the server version we are using.}}
Fedora packages for {{code|arcanist}} are currently provided in a [ COPR repository]. To enable it and install {{code|arcanist}}, run:
sudo dnf copr enable kanarip/phabricator
sudo dnf install arcanist
You may need to adjust PHP to load the system trusted CA certificate store. Create a file {{filename|/etc/php.d/99-curl-systemtrust.ini}} with this content:
Then from a checkout of any repository for which changes are tracked in Phabricator, run:
arc install-certificate
You will be prompted to visit a link for a generated certificate used for API calls. After visiting that link (and logging into Phabricator if necessary), you will see a string of characters in a text box. Copy those characters and paste them into the {{code|arc}} prompt.
The command to submit diffs is {{code|arc diff}}. The general workflow is to create your change on a local branch - it is not necessary to fork the repository or push your change to any remote - and then run {{code|arc diff}} from that branch. To update the diff, just modify the branch and run {{code|arc diff}} again; {{code|arcanist}} should detect the existing diff and update it, rather than creating a new one.
Many of the projects tracked in Phabricator use the [ gitflow] model, which means their main development branch is called {{code|develop}}, not {{code|master}}. You can easily identify these as when you first check out the repo, you will be on the {{code|develop}} branch. When you first run {{code|arc diff}}, it will ask you which 'Default Commit Range' you want to use. For the gitflow projects, you should enter {{code|origin/develop}}. For projects which just use a {{code|master}} branch, you should enter {{code|origin/master}}. When running {{code|arc diff}}, you can always explicitly specify the starting point for the range, e.g. {{code|arc diff develop}} to start from the state of your local {{code|develop}} branch.
If the project you are contributing to has tests and/or linting enabled, you may need to ensure you have the appropriate packages installed, and/or run {{code|arc diff}} from a [ virtualenv], to ensure the tests and lint run correctly. Check the project's documentation and/or contribution guide (e.g. [[Taskotron contribution guide]]) for details.
For detailed instructions on {{code|arc}} usage, see [ the arcanist user guide].
== FAQs ==
=== User FAQ ===
<dt> Do I need to create yet another account?
<dd> No. If you need to log in (to e.g. create a ticket), use your '''FAS email address''' (that is <code></code>). You'll be redirected to FAS where you supply your password and then back to Phabricator. No new account is necessary.
<dt> The main page is confusing.
<dd> Use the navigation toolbar on the left:
* ''Differential'' will let you see all patch reviews or create a new one manually (see [[#issues-diffs]] for a better way to do this).
* ''Maniphest'' will let you see current tickets (bugs, requests) or create a new one (look into the upper right screen corner).
* ''Projects'' will show you a list of our projects. You will need this when creating a new ticket to provide a correct project name.
* ''[ Feed]'' (available from ''Applications'') will show you the latest changes in Phabricator.
<dt> I receive too much email for the tickets I'm subscribed to. Every single ticket change is announced.
<dd> Go to your [ Email preferences] and set which types of action you want to get email notifications for.
=== Developer FAQ ===
<dt> I want to be notified for all tickets in a certain project, even if I'm not directly subscribed to them.
<dd> Visit the desired project from the [ list of projects]. Make sure you're looking at the project details page (the top icon in the left bar) - for certain projects, the workboard is displayed by default. Now click on ''Join Project'' and then on ''Watch Project''. From now on, you'll receive notifications about every ticket change related to this project. You can cancel your subscription from here as well.
<dt> I want to watch for ticket changes with more complicated rules, not just per-project.
<dd> Use [ Herald tool]. You'll be mostly interested in ''Maniphest Tasks'' (tickets) rules or ''Differential Revisions'' (patch reviews) rules. These rules are evaluated for every ticket/review change. For example you can specify that if a ticket has a certain keyword in its description, you'll get automatically subscribed to it. Example:
<pre>Name: kparal: track interesting keywords
Applies To: Maniphest Tasks
When any of these conditions are met:
  Title matches regexp /(upgradepath|depcheck|autoqa|rpmguard)/i
  Body matches regexp /(upgradepath|depcheck|autoqa|rpmguard)/i
Take these actions the first time this rule matches:
  Add emails to CC kparal</pre>
<dt> I want to be notified for all patch reviews for a certain project/repository, even if I'm not listed among reviewers.
<dd> Use Herald tool (see above). You'll either need to list the repositories you're interested in, or you can list the projects these repositories are related to (each repository can be related to one or more projects), see [ the list of all repositories] and the relevant projects displayed next to each of them, looking like "tags". Example:
<pre>Name: kparal: watch revisions for selected repositories
Applies to: Differential Revisions
When all of these conditions are met:
  Repository is any of rWTCMS (python-wikitcms), rFAKE (fake_fedorainfra)
Take these actions the first time this rule matches:
  Send an email to kparal</pre>
<pre>Name: kparal: watch revisions for selected projects
Applies to: Differential Revisions
When all of these conditions are met:
  Repository's projects include any of repos-taskotron, infrastructure, papercuts, testCloud
Take these actions the first time this rule matches:
  Send an email to kparal</pre>
<dt> I want to be notified of tickets without any project set (usually bug reports from people not familiar with Phabricator).
<dd> Use Herald tool (see above). Example:
<pre>Name: kparal: notify me of tasks without project set
Applies To: Maniphest Tasks
When any of these conditions are met:
  Projects does not exist
Take these actions the first time this rule matches:
  Send an email to kparal</pre>
<dt> I want to be notified just once when a ticket/patch is created, not for every change, or I want to selectively subscribe/unsubscribe from them.
<li>If you start watching a certain project, you'll receive all changes of all tickets.
<li>You'll also receive all changes of tickets/patches, if you use a Herald rule containing:
<pre>Add emails to CC &lt;name&gt;</pre>
But if you've set this to apply ''only the first time this rule matches'', you'll be then able to unsubscribe later from that item using the ''Unsubscribe'' button.
<li>If you want to receive the notification just once and not subscribe automatically, use this action in a Herald rule:
Take these actions ''the first time'' this rule matches:
''Send an email'' to &lt;name&gt;
You can then decide whether to subscribe to that ticket/patch using the ''Subscribe'' button and receive further notifications, or ignore it and not receive any further notifications for that item.</ul>
<dt> I want to be notified of new or edited wiki documents in Phabricator.
<dd> Use Herald tool (see above). You can watch just a certain document path (and everything below it), new or edited documents or both. You can again get either subscribed or receive just a one-time notification. Example:
<pre>kparal: add to CC to new wiki documents
Applies To: Phriction Documents
When all of these conditions are met:
  Path contains taskotron/
  Is newly created is true
Take these actions every time this rule matches:
  Add Subscribers kparal</pre>
<dt> Why haven't I received a notification?
<dd> Look at [ Herald Transcript] for that particular item. It lists all the existing rules and shows whether they were acted on or not and why. <br>
Tip: If you prefix your rule name with your nick, it will be much easier for you to distinguish which rules are yours. <br>
You can also use the [ Herald Test Console] to test your rules against particular objects.

Latest revision as of 12:44, 7 August 2017

QA instance of Phabricator has been discontinued.