Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117@title Diffusion User Guide@group userguideGuide to Diffusion, the Phabricator repository browser.= Overview =Diffusion is a repository browser which allows you to explore source code in aSubversion, Git, or Mercurial repository. It is somewhat similar to softwarelike Trac and GitWeb.Diffusion can either import a read-only copy of repositories hosted somewhereelse (for example, from GitHub, Bitbucket or existing hosting) or hostrepositories within Phabricator. Hosted repositories support a variety oftriggers and access controls.Diffusion is integrated with the other tools in the Phabricator suite. Forinstance: - 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; - for hosted repositories, Herald can enforce granular access control rules; - in all the tools, commit names are automatically linked.= Adding Repositories =Repository administration is accomplished through Diffusion. You can use theweb interface in Diffusion to import an external repository, or create a newhosted repository. - For hosted repositories, make sure you go through the setup instructions in @{article:Diffusion User Guide: Repository Hosting} first. - For all repositories, you'll need to be running the daemons. If you have not set them up yet, see @{article:Managing Daemons with phd}.By default, you must be an administrator to create a new repository.= Repository Callsigns and Commit Names =Each repository is identified by a "callsign", which is a short uppercase stringlike "P" (for Phabricator) or "ARC" (for Arcanist).Each repository must have a unique callsign. Callsigns must be unique withinan install but do not need to be globally unique, so you are free to use thesingle-letter callsigns for brevity. For example, Facebook uses "E" for theEngineering repository, "O" for the Ops repository, "Y" for a Yum packagerepository, and so on, while Phabricator uses "P", "ARC", "PHU" for libphutil,and "J" for Javelin. Keeping callsigns brief will make them easier to use, andthe use of one-character callsigns is recommended if they are reasonablyevocative and you have no more than 26 tracked repositories.The primary goal of callsigns is to namespace commits to SVN repositories: ifyou use multiple SVN repositories, each repository has a revision 1, revision 2,etc., so referring to them by number alone is ambiguous. However, even for Gitthey impart additional information to human readers and allow parsers to detectthat something is a commit name with high probability (and allow distinguishingbetween multiple copies of a repository).Diffusion uses this callsign and information about the commit itself to generatea commit name, like "rE12345" or "rP28146171ce1278f2375e3646a1e1ea3fd56fc5a3".The "r" stands for "revision". It is followed by the repository callsign, andthen a VCS-specific commit identifier (for SVN, the commit number; for Git andMercurial, the commit hash). When writing the name of a Git commit you mayabbreviate the hash, but note that hash collisions are probable for short prefixlengths. See this post on the LKML for a historical explanation of Git'soccasional internal use of 7-character hashes:https://lkml.org/lkml/2010/10/28/287Because 7-character hashes are likely to collide for even moderately largerepositories, Diffusion generally uses either a 16-character prefix (which makescollisions very unlikely) or the full 40-character hash (which makes collisionsastronomically unlikely).= Running Diffusion Daemons =In most cases, it is sufficient to run: phabricator/bin/ $ ./phd start...to start the daemons. For a more in-depth explanation of `phd` and daemons,see @{article:Managing Daemons with phd}.NOTE: If you have an unusually large install with multiple web frontends, seenotes in @{article:Managing Daemons with phd}.You can use the repository detail screen and the Daemon Console to monitor thedaemons and their progress importing the repository. Small repositories shouldimport quickly, while larger repositories may take some time. Commits shouldbegin appearing in Diffusion within a few minutes for all but the largestrepositories.= Next Steps =Continue by: - learning how to creating a symbol index at @{article:Diffusion User Guide: Symbol Indexes}; or - setting up repository hosting with @{article:Diffusion User Guide: Repository Hosting}; or - managing repository hooks with @{article:Diffusion User Guide: Commit Hooks}; or - understanding daemons in more detail with @{article:Managing Daemons with phd}.If you're having trouble getting things working, these topic guides may behelpful: - get details about automatically closing tasks and revisions in response to commits in @{article:Diffusion User Guide: Autoclose}; or - understand how Phabricator updates repositories with @{article:Diffusion User Guide: Repository Updates}; or - fix issues with repository imports with @{article:Troubleshooting Repository Imports}.