Diffusion: Phabricator’s Code Browsing and Repository Management

Greg Foster
Greg Foster
Graphite software engineer

Diffusion is the repository hosting application within Phabricator, designed for browsing, managing, and understanding code within various version control systems. This detailed sub-page provides an in-depth look at Diffusion and its capabilities.


Diffusion offers a centralized interface for managing repositories, whether they are hosted directly on Phabricator or mirrored from external sources. It supports Git, Mercurial, and Subversion (SVN), making it versatile for different development workflows.

  • Repository Hosting: Host and manage repositories directly in Phabricator.

  • Repository Mirroring: Mirror external repositories for a unified view within Phabricator.

  • Code Browsing: Navigate repositories with an intuitive web interface, viewing files, commits, and branches.

  • Commit History and Diff Viewer: Examine commit messages, changes, and history in a comprehensive way.

  • Blame Tool: Identify the last revision that modified each line of a file to trace changes back to their source.

  • Powerful Search: Use Phabricator's advanced search to find commits, revisions, repositories, and more.

  • Setup: Repositories can be set up through the Phabricator web interface or using the phabricator/ arcanist command-line tool.

  • Access Control: Define who can read from and write to each repository with fine-grained permission controls.

  • Synchronization: Automatically synchronize mirrored repositories to keep them up-to-date with external sources.

  • Integration: Use mirrored repositories alongside native Phabricator repositories for code review and browsing.

  • Intuitive UI: Browse the structure of your codebase from within your web browser.

  • History and Logs: View a file’s or directory's history to see how it has evolved over time.

  • Visual Diffs: Understand changes through side-by-side diff views.

  • Annotations: View annotated code with blame information to quickly understand who made which changes and why.

Diffusion works in tandem with Herald, Phabricator's tool for creating custom automation and triggers, to provide enhanced repository management.

  • Commit Hooks: Create rules to run on every commit, enforcing commit message standards or automatically rejecting commits that don't meet certain criteria.

  • Notification Rules: Set up notifications for repository events to keep the relevant team members informed about changes.

Maximizing the benefits of Diffusion involves adopting best practices:

  • Regular Commits: Encourage your team to make frequent, small commits to simplify code review and history examination.

  • Descriptive Commit Messages: Foster the habit of writing clear and informative commit messages.

  • Branch Management: Use branches effectively to organize work around features, fixes, and releases.

Diffusion’s capabilities extend into integration with other tools and applications:

  • Integration with Differential: Seamlessly transition from browsing code in Diffusion to creating diffs for review in Differential.

  • Phabricator Extensions: Extend Diffusion's functionality with custom extensions to tailor repository management to your needs.

Diffusion is a robust and integral component of the Phabricator ecosystem, simplifying the management and understanding of code across repositories. By providing comprehensive tools for code browsing, review, and management, Diffusion helps development teams maintain an efficient and organized codebase.

In the subsequent pages of this guide, we will explore how Diffusion interacts with the rest of Phabricator’s suite to streamline the development process, ensuring a seamless workflow from code conception to deployment.

Graphite
Git stacked on GitHub

Stacked pull requests are easier to read, easier to write, and easier to manage.
Teams that stack ship better software, faster.

Or install our CLI.
Product Screenshot 1
Product Screenshot 2