Win2D/CONTRIBUTING.md

148 строки
6.1 KiB
Markdown

# Contribute to the Win2D Project
Thank you for your interest in the Win2D project!
* [Before we can accept your pull request](#before-we-can-accept-your-pull-request)
* [Source Directory Structure](#source-directory-structure)
* [Contribute](#contribute)
## Before we can accept your pull request
Microsoft asks that all contributors sign a contributor license agreement (CLA).
CLAs are generally common and accepted in most open source software projects.
We all want Microsoft's open source projects to be as widely used and
distributed as possible. We also want its users to be confident about the
origins and continuing existence of the code. The CLA helps us achieve that
goal by ensuring that we have the agreement of our contributors to use their
work, whether it be code, or documentation.
The CLA permits Microsoft to distribute your code without restriction. It
doesn't require you to assign to us any copyright you have, the ownership of
the copyright remains with you. You cannot withdraw permission for use of the
contribution at a later date.
We are generally seeking originally authored code and documentation as
contributions. Should you wish to submit materials that are not your original
work, you may submit them separately to the Project in accordance with the terms
of the CLA.
Our Azure Pull Request Bot will automatically check for a signed CLA when you
submit a pull request as described below in [Contribute](#contribute).
If there isn't a CLA on file, it will walk you through an all electronic process.
**Note**: your employer may also have to complete an on-line form.
If you would rather use an off-line process, email
[win2dcla@microsoft.com](mailto:win2dcla@microsoft.com) and we will send you the
form to sign, scan and return.
## Source Directory Structure
Note: For the bulk of interesting product code, go to /winrt/lib.
**/bin** - Binary files generated by the build
**/build** - Shared, build-related resources that are common across projects
- /Assets - Common Windows Store assets used for tests and samples
- /nuget - Resources needed for building the NuGet package
**/obj** - Intermediate files generated by the build
**/samples** - Example projects showing how to use Win2D
**/tools** - Standalone utilities, separate from Win2D product code
- /checkcode - Verifies the right copyright banner appears at the top of each source file
- /codegen - Generates headers+IDL from XML resource files (you don't have to build this to build Win2D)
- /docs - Tools and scripts for building API reference documentation
**/winrt** - Win2D product code and automated tests
- /dll - Build resources for the product dll
- /docsrc - Source files used to create the reference documentation
- /inc - Common includes
- /lib - All the projected IDL and runtime class implementations
- /published - Headers that are included directly in the NuGet package for 3rd part consumption
- /test.external - Automated tests that use only the public WinRT interface
- /test.internal - Automated tests that link directly with winrt.lib to access internals of the implementation
- /test.managed - Automated tests written in C#
- /test.nativecomponent - C++/CX component that exposes native functionality for use by test.managed
## Contribute
In order for the contribution process to be as seamless as possible, the
following procedure has been established.
1. Create a new branch
2. Add new content or edit existing content
3. Verify your changes
4. Submit a pull request to the main repository
5. Delete the branch
Each branch should be limited to a single feature/bug fix both to streamline
work flow and reduce the possibility of merge conflicts.
#### Create a new branch
This can be done in Visual Studio:
- Go to 'View' -> 'Team Explorer' -> 'Branches'
- Click 'New Branch'
- Enter the name of your new branch
- Check the check box 'Checkout branch'
- Click 'Create Branch'
#### Add new content or edit existing content
Using Visual Studio or your favorite editor, add your new content or edit
existing files.
You can commit multiple times while you are doing your work, or you can wait
and commit only once when you're done.
#### Verify your changes
If you have added new functionality please make sure to add tests to the
appropriate test suites.
To validate your changes, run "msbuild /m /nr:false Win2D.proj" from a
Visual Studio Developer Command Prompt. This will:
- Build all flavors of all projects (debug, release, x86, x64, ARM, and ARM64)
- Run all automated tests
- Generate updated reference documentation
- Make sure all source files include the correct MIT copyright header
To run Store unit tests, you must have a Windows Store development license
installed on your computer, and must install the test package certificate from
build\Assets\TemporaryKey.pfx in your Win2D enlistment:
1. Right-click on the .pfx file, and select **Install PFX**
2. Choose **Local Machine**, then click **Next** three times (leaving the password blank)
3. Select **Place all certificates in the following store**
4. Click the **Browse** button, and select **Trusted People**
5. Click **OK**, **Next**, and then **Finish**
#### Submit a pull request to the main repository
When you are done with your work and are ready to have it merged into the central
repository follow these steps.
1. Push your branch back to GitHub
2. On the GitHub site, navigate in your fork to the new branch
3. Click the **Pull Request** button at the top of the page
4. Ensure that the Base branch is 'Win2D@master' and the Head branch is
'<your username>/Win2D@<branch name>'
5. Click the **Update Commit Range** button
6. Give your pull request a Title, and describe all the changes being made.
If your change fixes a GitHub issue make sure to reference it in the description.
7. Submit the Pull Request
One of the site administrators will now process your pull request. Your pull
request will surface on the Win2D site under Issues. When the Pull Request is
accepted, the issue will be resolved.
#### Delete a branch
Once your changes have been successfully merged into the central repository you
can delete the branch you used, as you will no longer need it. Any further work
requires a new branch.
Congratulations, you have successfully contributed to the project.