Xdebug is hosted on Github. The source code can be browsed there and can be checked out with:
git clone https://github.com/xdebug/xdebug.git
If you think you want to fix a bug or work on a new feature, then you need to follow the instructions below. Please reach out first to discuss your suggested changes as well.
Fork Xdebug on GitHub.
Make sure you have configured your Author Name and Author Email with GIT. Xdebug doesn't accept contributions from accounts with unnatural names.
Clone the repository:
git clone git@github.com:{your username}/xdebug.gitChange into the
xdebugrepository:cd xdebug
Add the original repository as
upstreamremote:git remote add upstream https://github.com/xdebug/xdebug.git git fetch upstream
Add a tracking branch for Xdebug 3.4:
git checkout --track origin/xdebug_3_4
There are two branches in operation:
master- This is were all new feature Pull Requests should be targeted at
xdebug_3_4- This is were all bug fix Pull Requests should be targeted at. The
maintainer will add them to
mastertoo when merging the Pull Request.
Make sure that your
masterandxdebug_3_4branches are up to date with theupstreamrepository.Create an issue in the issue tracker (if none exists yet).
Switch to the right target branch (
masterfor features,xdebug_3_4for bug fixes).Create a feature branch:
git checkout -b issue{issue number}-{description}For example:
git checkout -b issue1893-crash-with-fiber
For a bug fix, write one or more test cases to verify that the problem currently exists, and also to define what the output should be. Xdebug uses PHP's phpt tests. The
README.rstfile contains information on how to run the tests.Each of Xdebug's modes has a specific directory where to place tests. For example, for code coverage that is
tests/coverage. Test case names should follow the following pattern:tests/{feature-group}bug0{issue-number}.phptIf you need more than one test, append
-001after the issue number.Pull Requests without tests won't be accepted.
Fix and/or write the code.
Before you submit a PR, make sure each commit is a single logical unit. The main commit that implements the issue, should have as commit message ``Fixed issue #1893: `` followed by the Summary of the issue in the issue tracker. The message should state what the change was about. For example:
Fixed issue #1893: Crash with ext-fiber with xdebug.mode=coverage
Before you submit a PR, make sure to rebase first on the branch that you will be targeting, for example to rebase against the current bug fix branch:
git fetch upstream && git rebase upstream/xdebug_3_4
Push your changes to your remote repository:
git push origin {branch-name}For example:
git push origin issue1893-crash-with-fiber
Once you're satisfied, generate a pull request. Make sure that the title is in one line, it's fine if it's a few characters larger than what GitHub likes. Do not let the title spill over into the description with
...`.In the description, explain what you changed, and why, and how your solution is the right one. Feel free to include questions, and pointers to specific things that need close review.