Difference between revisions of "Pull Requests"

From D Wiki
Jump to: navigation, search
(expand)
Line 61: Line 61:
 
% git push origin    # push changes to your fork of DMD
 
% git push origin    # push changes to your fork of DMD
 
</pre>
 
</pre>
 +
 +
==Create a pull request==
 +
 +
Once you have tested all your changes and pushed them to your fork on GitHub, you are ready to submit a pull request.
 +
 +
# Navigate to your fork of the project on GitHub.
 +
# '''Important''': Select the branch that you made your changes in, say issue_1234.
 +
# Click on the "Pull Request" button.
 +
 +
This will submit your changes for review by the D maintainers. If your changes are approved, they will be merged into the master branch. Otherwise, if the maintainers have some comments or feedback, you can refine your changes by editing and testing in your local workspace, and pushing the new changes to the same git branch. The new changes will be automatically included in your pull request.
 +
 +
===Rebasing===
 +
 +
'''TBD'''

Revision as of 18:27, 10 December 2012

The source code of the D compiler (dmd), runtime library (druntime), and standard library (Phobos), are all available at GitHub.

Creating your fork

To contribute to the D compiler, runtime library, or standard library, you need to create an account on GitHub, and then navigate to the D programming language project (as linked above), then create a fork of that project.

For example, if you wish to submit a patch to the D compiler, you should navigate to D-Programming-Language/dmd, then click on the "Fork" button at the top right corner of the page. This will clone the D compiler sources into your list of projects.

Checkout the sources

See also: Using Git on Windows

Once you have forked the project you wish to contribute to, use git to checkout a local copy of the project.

Generally, you should checkout a copy of at least dmd, druntime, and phobos in order to have a working compiler toolchain that you can use to test your changes.

Source code structure

The D source code assumes a particular directory structure, which you probably would want to adopt so that you don't have to fiddle with the Makefiles all the time.

Posix

For Posix, it is assumed that you will have a common root directory where the compiler and library sources will sit under. For example, you can choose the common root directory to be /usr/src/d, then you can checkout the sources under this directory:

% mkdir /usr/src/d
% cd /usr/src/d
% git clone git://github.com/D-Programming-Language/dmd.git
% git clone git://github.com/D-Programming-Language/druntime.git
% git clone git://github.com/D-Programming-Language/phobos.git

You should end up with this directory structure:

/usr/src/d/
/usr/src/d/dmd
/usr/src/d/druntime
/usr/src/d/phobos

Windows

TBD

Building the sources

TBD

Make your changes in a branch

Generally, it is preferred that any changes you wish to contribute should be made in its own dedicated topic branch. For example, if you have a fix for issue 1234 in the D compiler, you might want to do something like this:

% cd /usr/src/d/dmd/src
% git checkout -b issue_1234
% vim expression.c   # make your changes here
% make -f posix.mak
% ...                # test your changes here
% git commit -a      # commit to the branch named 'issue_1234'
% git push origin    # push changes to your fork of DMD

Create a pull request

Once you have tested all your changes and pushed them to your fork on GitHub, you are ready to submit a pull request.

  1. Navigate to your fork of the project on GitHub.
  2. Important: Select the branch that you made your changes in, say issue_1234.
  3. Click on the "Pull Request" button.

This will submit your changes for review by the D maintainers. If your changes are approved, they will be merged into the master branch. Otherwise, if the maintainers have some comments or feedback, you can refine your changes by editing and testing in your local workspace, and pushing the new changes to the same git branch. The new changes will be automatically included in your pull request.

Rebasing

TBD