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 [email protected]:{your username}/xdebug.git
Change into the
xdebug
repository:cd xdebug
Add the original repository as
upstream
remote:git remote add upstream https://github.com/xdebug/xdebug.git git fetch upstream
Add a tracking branch for Xdebug 3.1:
git checkout --track origin/xdebug_3_1
There are two branches in operation:
master
- This is were all new feature Pull Requests should be targeted at
xdebug_3_1
- This is were all bug fix Pull Requests should be targeted at. The
maintainer will add them to
master
too when merging the Pull Request.
Make sure that your
master
andxdebug_3_1
branches are up to date with theupstream
repository.Create an issue in the issue tracker (if none exists yet).
Switch to the right target branch (
master
for features,xdebug_3_1
for 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.rst
file 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}.phpt
If you need more than one test, append
-001
after 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_1
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.