Phabricator/Diffusion

"Diffusion" is the Phabricator repository browser and repository management tool. Eventually we want to replace "Gerrit" for code review and repository management by "Differential", and "gitblit" for repository read-only mirroring by "Diffusion". Right now, we're mirroring some of our Git repositories to Phabricator for demonstration purposes.

Diffusion is integrated with the other tools in the Phabricator suite. For instance:
 * When you commit Differential revisions to a tracked repository, they are automatically updated and linked to the corresponding commits;
 * You can add Herald rules to notify you about commits that match certain rules;
 * In tasks and other places, you can automatically link to commits.

If you're looking for a new repository, that's still over here at Gerrit.

Callsigns
Callsigns are a thing in Diffusion. You can read about them at . Callsigns must be. This means that one or more letters from A to Z inclusive in the Latin alphabet must be in the callsign and the callsign is considered immutable. We have and follow callsign naming conventions. https://phabricator.wikimedia.org/diffusion lists all active repositories and their callsigns.

Module:Callsigns maps repository "paths" in gerrit to Diffusion callsigns, for example "mediawiki/extensions/AbuseFilter" maps to the callsign. git file takes a  parameter to refer to a git repository (T101358), so it invokes Module:Callsigns to create a link to a file in diffusion.

Repository-Admins
The Repository-Admins group in Phabricator is tasked with creating, managing and organizing our repositories. If you need help with a repo, these are the folks to ask.

Repositories are to be created using the naming conventions. Repositories can now be locally hosted to Phabricator and used via Differential/Arcanist.

Diffusion vs. Gitblit
We are switching our repository browser to Diffusion (T752) from gitblit (was at https://git.wikimedia.org).
 * ''See also Git/Gerrit evaluation

Advantages

 * Privacy: doesn't load external resources from googleapis.com.
 * Nice minor features of the project summary
 * README preview
 * "Locate file" quicksearch by filename
 * Allows grepping file content and filename from Browse > Show search (grepping not enabled on out gitblit, but was quite used at gitweb's time)
 * Easier to configure
 * "Path was deleted" feature when looking for a deleted file.

Potential advantages

 * Discoverability: diffusion seems able to sustain more traffic, e.g. from search engines, allowing a permissive robots.txt. (Not verified yet; we thought this of gitblit too, initially.)

Disadvantages

 * No repository metrics
 * Will not be able to show big diffs.
 * No ZIP/tarball download?

Neutral

 * URL easier to type because they don't contain escaped characters nor .git suffix (like gitweb); but only if you know the callsign, (e.g.  vs.  ).
 * Performance?
 * "Remote repositories" (?)
 * No full list of projects ( is paginated), but that was too slow to use for real anyway.

Email address privacy
Obviously, if you commit a change in Git using your email address which you configured in Phabricator, these two bits of information will be linked in the user interface.