Write a "Developer Setup" guide for onboarding
Summary: Fixes T11561. Collect guidance about local configuration which hasn't been obvious in the past.
Test Plan:
  - Read document carefully.
  - Used `./bin/diviner generate` to generate documentation.
  - Previewed in Diviner locally:
{F4795021}
Reviewers: amckinley, chad
Reviewed By: chad
Subscribers: cspeckmim
Maniphest Tasks: T11561
Differential Revision: https://secure.phabricator.com/D17641
			
			
This commit is contained in:
		
							
								
								
									
										112
									
								
								src/docs/contributor/developer_setup.diviner
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								src/docs/contributor/developer_setup.diviner
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| @title Developer Setup | ||||
| @group developer | ||||
|  | ||||
| How to configure a Phabricator development environment. | ||||
|  | ||||
| Overview | ||||
| ======== | ||||
|  | ||||
| There are some options and workflows that may be useful if you are developing | ||||
| or debugging Phabricator. | ||||
|  | ||||
|  | ||||
| Configuration | ||||
| ============= | ||||
|  | ||||
| To adjust Phabricator for development: | ||||
|  | ||||
|   - Enable `phabricator.developer-mode` to enable some options and show | ||||
|     more debugging information. | ||||
|   - Enable `phabricator.show-prototypes` to show all the incomplete | ||||
|     applications. | ||||
|   - See @{article: Using DarkConsole} for instructions on enabling the | ||||
|     debugging console. | ||||
|  | ||||
|  | ||||
| Error Handling | ||||
| ============== | ||||
|  | ||||
| Errors normally go to DarkConsole (if enabled) and the webserver error log, | ||||
| which is often located somewhere like `/var/log/apache/error_log`. This file | ||||
| often contains relevant information after you encounter an error. | ||||
|  | ||||
| When debugging, you can print information to the error log with `phlog(...)`. | ||||
| You can `phlog(new Exception(...))` to get a stack trace. | ||||
|  | ||||
| You can print information to the UI with `throw new Exception(...)`, | ||||
| `print_r(...)`, or `var_dump(...)`. | ||||
|  | ||||
| You can abort execution with `die(...)` if you want to make sure execution | ||||
| does not make it past some point. Normally `throw` does this too, but callers | ||||
| can `catch` exceptions; they can not catch `die(...)`. | ||||
|  | ||||
|  | ||||
| Utilities | ||||
| ========= | ||||
|  | ||||
| After adding, renaming, or moving classes, run `arc liberate` to rebuild | ||||
| the class map: | ||||
|  | ||||
| ``` | ||||
| phabricator/ $ arc liberate | ||||
| ``` | ||||
|  | ||||
| Until you do this, Phabricator won't recognize your new, moved, or renamed | ||||
| classes. You do not need to run this after modifying an existing class. | ||||
|  | ||||
| After any modifications to static resources (CSS / JS) but before sending | ||||
| changes for review or pushing them to the remote, run `bin/celerity map`: | ||||
|  | ||||
| ``` | ||||
| phabricator/ $ ./bin/celerity map | ||||
| ``` | ||||
|  | ||||
| This rebuilds the static resource map. | ||||
|  | ||||
| If you forget to run these commands you'll normally be warned by unit tests, | ||||
| but knowing about them may prevent confusion before you hit the warnings. | ||||
|  | ||||
|  | ||||
| Command Line | ||||
| ============ | ||||
|  | ||||
| Almost every script supports a `--trace` flag, which prints out service | ||||
| calls and more detailed error information. This is often the best way to get | ||||
| started with debugging command-line scripts. | ||||
|  | ||||
|  | ||||
| Performance | ||||
| =========== | ||||
|  | ||||
| Although it is more user-focused than developer-focused, the | ||||
| @{article:Troubleshooting Performance Problems} guide has useful information | ||||
| on the tools available for diagnosing and understanding performance problems. | ||||
|  | ||||
|  | ||||
| Custom Domains | ||||
| ============== | ||||
|  | ||||
| If you're working with applications that support custom domains (like Phurl or | ||||
| Phame) you can normally test them by adding more entries to your webserver | ||||
| configuration that look exactly like the primary entry (or expanding the | ||||
| primary entry to match more domains). | ||||
|  | ||||
| Phabricator routes all requests based on host headers, so alternate domains | ||||
| do not normally need any kind of special configuration. | ||||
|  | ||||
| You may also need to add `/etc/hosts` entries for the domains themselves. | ||||
|  | ||||
|  | ||||
| Creating Test Data | ||||
| ================== | ||||
|  | ||||
| You can create test objects with the "Lipsum" utility: | ||||
|  | ||||
| ``` | ||||
| phabricator/ $ ./bin/lipsum help generate | ||||
| phabricator/ $ ./bin/lipsum generate ... | ||||
| ``` | ||||
|  | ||||
| Test data can make your local install feel a little more realistic. With | ||||
| `--quickly`, you can generate a large amount of test data to help test issues | ||||
| with performance or scale. | ||||
		Reference in New Issue
	
	Block a user
	 epriestley
					epriestley