Index: docs/Hacking.md |
diff --git a/docs/Hacking.md b/docs/Hacking.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..868ecee640d5cf116cd97cdf529547e15ad7abf5 |
--- /dev/null |
+++ b/docs/Hacking.md |
@@ -0,0 +1,102 @@ |
+# GYP Hacking |
+ |
+Note that the instructions below assume that you have the Chromium |
+[depot tools](http://dev.chromium.org/developers/how-tos/depottools) |
+installed and configured. |
+If you don't, you do not pass go, and you cannot collect your $200. |
+ |
+## Getting the sources |
+ |
+Best is to use git to hack on anything, you can set up a git clone of GYP |
+as follows: |
+ |
+``` |
+git clone https://chromium.googlesource.com/external/gyp.git |
+cd gyp |
+git svn init --prefix=origin/ -T trunk http://gyp.googlecode.com/svn/ |
+git config --replace-all svn-remote.svn.fetch trunk:refs/remotes/origin/master |
+git svn fetch |
+``` |
+ |
+At this point you should get a quick stream of output as git-svn rebuilds |
+it's SVN version->SHA1 database: |
+ |
+``` |
+Rebuilding .git/svn/refs/remotes/origin/master/... |
+r1 = 880a7f243635258fa4938bb7ebf9b4d5f46e3e48 |
+r2 = 24a2a4ceedce0ae16d0a107d9898e4828775c633 |
+r3 = 41276136692399ac4bb84c6664d02384fcad70ad |
+``` |
+ |
+If you get slow trickling output with a bunch of file names as such: |
+ |
+``` |
+r1 = 880a7f243635258fa4938bb7ebf9b4d5f46e3e48 (refs/remotes/git-svn) |
+ A xc.py |
+``` |
+ |
+then these instructions are out of date, and you're re-downloading |
+the entire version history from SVN. Please update these instructions |
+once you've figured out what's up. |
+ |
+If you intend to commit your changes back to the GYP SVN repository, |
+you need to configure git-svn's commit url. |
+ |
+``` |
+git config svn-remote.svn.commiturl https://gyp.googlecode.com/svn/trunk |
+``` |
+ |
+## Testing your change |
+ |
+GYP has a suite of tests which you can run with the provided test driver |
+to make sure your changes aren't breaking anything important. |
+ |
+You run the test driver with e.g. |
+ |
+``` |
+python gyptest.py |
+python gyptest.py test/win # Only run Windows-related tests. |
+python gyptest.py -a -f ninja # Only run ninja-related tests. |
+``` |
+ |
+See [Testing](Testing) for more details on the test framework. |
+ |
+Note that it can be handy to look at the project files output by the tests |
+to diagnose problems. The easiest way to do that is by kindly asking the |
+test driver to leave the temporary directories it creates in-place. |
+This is done by setting the enviroment variable "PRESERVE", e.g. |
+ |
+``` |
+set PRESERVE=all # On Windows |
+export PRESERVE=all # On saner platforms. |
+``` |
+ |
+## Reviewing your change |
+ |
+All changes to GYP must be code reviewed before submission, GYP uses rietveld. |
+ |
+Upload your change with: |
+ |
+``` |
+git cl upload |
+``` |
+ |
+## Submitting |
+ |
+Once you're ready to submit, you can use the GYP try bots to test your change |
+with e.g. |
+ |
+``` |
+git try |
+``` |
+ |
+Once the change has been approved (LGTMed) and passes trybots, you can submit |
+it with: |
+ |
+``` |
+git cl dcommit |
+``` |
+ |
+To be allowed to submit, you will need committer rights in the project, and |
+your password for the SVN server. You can get that password here: |
+https://code.google.com/hosting/settings |