| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | _Have something you'd like to contribute to the framework?  We welcome pull | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | requests but ask that you carefully read this document first to understand how | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | best to submit them; what kind of changes are likely to be accepted; and what | 
					
						
							|  |  |  | to expect from the Spring team when evaluating your submission._ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _Please refer back to this document as a checklist before issuing any pull | 
					
						
							|  |  |  | request; this will save time for everyone!_ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | ## Take Your First Steps
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Understand the basics
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | Not sure what a pull request is, or how to submit one? Take a look at GitHub's | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | excellent [help documentation][] first. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Search JIRA first; create an issue if necessary
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | Is there already an issue that addresses your concern? Do a bit of searching | 
					
						
							|  |  |  | in our [JIRA issue tracker][] to see if you can find something similar. If you | 
					
						
							|  |  |  | do not find something similar, please create a new JIRA issue before submitting | 
					
						
							|  |  |  | a pull request unless the change is truly trivial -- for example: typo fixes, | 
					
						
							|  |  |  | removing compiler warnings, etc. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Discuss non-trivial contribution ideas with committers
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | If you're considering anything more than correcting a typo or fixing a minor | 
					
						
							|  |  |  | bug, please discuss it on the [spring-framework-contrib][] mailing list before | 
					
						
							| 
									
										
										
										
											2012-12-29 04:42:08 +08:00
										 |  |  | submitting a pull request. We're happy to provide guidance, but please spend an | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | hour or two researching the subject on your own, including searching the mailing | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | list for prior discussions. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Sign the Contributor License Agreement
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | If you have not previously done so, please fill out and submit the | 
					
						
							|  |  |  | [SpringSource CLA form][]. You'll receive a token when this process is complete. | 
					
						
							| 
									
										
										
										
											2012-12-29 04:42:08 +08:00
										 |  |  | Keep track of this; you may be asked for it later! | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Note that emailing/postal mailing a signed copy is _not_ necessary. Submission | 
					
						
							|  |  |  | of the web form is all that is required. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-29 04:42:08 +08:00
										 |  |  | Once you've completed the web form, simply add the following in a comment on | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | your pull request: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     I have signed and agree to the terms of the SpringSource Individual | 
					
						
							|  |  |  |     Contributor License Agreement. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | You do not need to include your token/id. Please add the above statement to all | 
					
						
							| 
									
										
										
										
											2012-12-29 04:42:08 +08:00
										 |  |  | future pull requests as well, simply so that the Spring Framework team knows | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | immediately that this process is complete. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | ## Create a Branch
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Branch from `master`
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-28 18:54:14 +08:00
										 |  |  | Master currently represents work toward Spring Framework 4.0. Please submit | 
					
						
							|  |  |  | all pull requests there, even bug fixes and minor improvements. Backports to | 
					
						
							|  |  |  | `3.2.x` will be considered on a case-by-case basis. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Use short branch names
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Branches used when submitting pull requests should preferably be named | 
					
						
							|  |  |  | according to JIRA issues, e.g. 'SPR-1234'. Otherwise, use succinct, lower-case, | 
					
						
							|  |  |  | dash (-) delimited names, such as 'fix-warnings', 'fix-typo', etc. In | 
					
						
							|  |  |  | [fork-and-edit][] cases, the GitHub default 'patch-1' is fine as well. This is | 
					
						
							|  |  |  | important, because branch names show up in the merge commits that result from | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | accepting pull requests and should be as expressive and concise as possible. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:50:31 +08:00
										 |  |  | ## Use Spring Framework Code Style
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:49:17 +08:00
										 |  |  | The complete [Spring Framework Code Style][] reference is available on the wiki, but | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | here's a quick summary: | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Mind the whitespace
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Please carefully follow the whitespace and formatting conventions already | 
					
						
							|  |  |  | present in the framework. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Tabs, not spaces | 
					
						
							| 
									
										
										
										
											2012-12-29 04:42:08 +08:00
										 |  |  | 1. Unix (LF), not DOS (CRLF) line endings | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 1. Eliminate all trailing whitespace | 
					
						
							|  |  |  | 1. Wrap Javadoc at 90 characters | 
					
						
							|  |  |  | 1. Aim to wrap code at 90 characters, but favor readability over wrapping | 
					
						
							|  |  |  | 1. Preserve existing formatting; i.e. do not reformat code for its own sake | 
					
						
							|  |  |  | 1. Search the codebase using `git grep` and other tools to discover common | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  |     naming conventions, etc. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 1. Latin-1 (ISO-8859-1) encoding for Java sources; use `native2ascii` to convert | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  |     if necessary | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Add Apache license header to all new classes
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```java | 
					
						
							|  |  |  | /* | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  |  * Copyright 2002-2014 the original author or authors. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  |  * you may not use this file except in compliance with the License. | 
					
						
							|  |  |  |  * You may obtain a copy of the License at | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *      http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  * distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  |  * See the License for the specific language governing permissions and | 
					
						
							|  |  |  |  * limitations under the License. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package ...; | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | ### Update Apache license header in modified files as necessary
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Always check the date range in the license header. For example, if you've | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | modified a file in 2014 whose header still reads: | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```java | 
					
						
							|  |  |  |  * Copyright 2002-2011 the original author or authors. | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | Then be sure to update it to 2014 accordingly: | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```java | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  |  * Copyright 2002-2014 the original author or authors. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Use @since tags for newly-added public API types and methods
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | For example: | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```java | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * ... | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @author First Last | 
					
						
							| 
									
										
										
										
											2013-05-28 18:54:14 +08:00
										 |  |  |  * @since 4.0 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  |  * @see ... | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | ## Prepare Your Commit
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Submit JUnit test cases for all behavior changes
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | Search the codebase to find related tests and add additional `@Test` methods | 
					
						
							|  |  |  | as appropriate. It is also acceptable to submit test cases on a per JIRA issue | 
					
						
							|  |  |  | basis, for example: | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```java | 
					
						
							|  |  |  | package org.springframework.beans.factory.support; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Unit tests for SPR-8954, in which a custom {@link InstantiationAwareBeanPostProcessor} | 
					
						
							|  |  |  |  * forces the predicted type of a FactoryBean, effectively preventing retrieval of the | 
					
						
							|  |  |  |  * bean from calls to #getBeansOfType(FactoryBean.class). The implementation of | 
					
						
							|  |  |  |  * {@link AbstractBeanFactory#isFactoryBean(String, RootBeanDefinition)} now ensures | 
					
						
							|  |  |  |  * that not only the predicted bean type is considered, but also the original bean | 
					
						
							|  |  |  |  * definition's beanClass. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @author Chris Beams | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | public class Spr8954Tests { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @Test | 
					
						
							|  |  |  |     public void cornerSpr8954() { | 
					
						
							|  |  |  |         // ... | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Squash commits
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-01 00:43:18 +08:00
										 |  |  | Use `git rebase --interactive --autosquash`, `git add --patch`, and other tools | 
					
						
							|  |  |  | to "squash" multiple commits into a single atomic commit. In addition to the man | 
					
						
							|  |  |  | pages for git, there are many resources online to help you understand how these | 
					
						
							|  |  |  | tools work. The [Rewriting History section of Pro Git][] provides a good overview. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Use real name in git commits
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Please configure git to use your real first and last name for any commits you | 
					
						
							|  |  |  | intend to submit as pull requests. For example, this is not acceptable: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Author: Nickname <user@mail.com> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Rather, please include your first and last name, properly capitalized, as | 
					
						
							|  |  |  | submitted against the SpringSource contributor license agreement: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Author: First Last <user@mail.com> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | This helps ensure traceability against the CLA and also goes a long way to | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | ensuring useful output from tools like `git shortlog` and others. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | You can configure this via the account admin area in GitHub (useful for | 
					
						
							|  |  |  | fork-and-edit cases); _globally_ on your machine with | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     git config --global user.name "First Last" | 
					
						
							|  |  |  |     git config --global user.email user@mail.com | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | or _locally_ for the `spring-framework` repository only by omitting the | 
					
						
							|  |  |  | '--global' flag: | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     cd spring-framework | 
					
						
							|  |  |  |     git config user.name "First Last" | 
					
						
							|  |  |  |     git config user.email user@mail.com | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Format commit messages
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-01 00:43:18 +08:00
										 |  |  | Please read and follow the [Commit Guidelines section of Pro Git][]. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Most importantly, please format your commit messages in the following way | 
					
						
							|  |  |  | (adapted from the commit template in the link above): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Short (50 chars or less) summary of changes | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     More detailed explanatory text, if necessary. Wrap it to about 72 | 
					
						
							|  |  |  |     characters or so. In some contexts, the first line is treated as the | 
					
						
							|  |  |  |     subject of an email and the rest of the text as the body. The blank | 
					
						
							|  |  |  |     line separating the summary from the body is critical (unless you omit | 
					
						
							|  |  |  |     the body entirely); tools like rebase can get confused if you run the | 
					
						
							|  |  |  |     two together. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Further paragraphs come after blank lines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      - Bullet points are okay, too | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      - Typically a hyphen or asterisk is used for the bullet, preceded by a | 
					
						
							|  |  |  |        single space, with blank lines in between, but conventions vary here | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Issue: SPR-1234, SPR-1235 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Use imperative statements in the subject line, e.g. "Fix broken Javadoc link" | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | 1. Begin the subject line with a capitalized verb, e.g. "Add, Prune, Fix, | 
					
						
							|  |  |  |     Introduce, Avoid, etc." | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 1. Do not end the subject line with a period | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | 1. Restrict the subject line to 50 characters or less if possible | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 1. Wrap lines in the body at 72 characters or less | 
					
						
							| 
									
										
										
										
											2012-12-29 04:42:08 +08:00
										 |  |  | 1. Mention associated JIRA issue(s) at the end of the commit comment, prefixed | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  |     with "Issue: " as above | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 1. In the body of the commit message, explain how things worked before this | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  |     commit, what has changed, and how things work now | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | For examples of this style, issue a `git log --author=cbeams` in the | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | `spring-framework` git repository. For convenience, here are several such commits: | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-01 00:21:54 +08:00
										 |  |  | - https://github.com/spring-projects/spring-framework/commit/08e2669b84ec0faa2f7904441fe39ac70b65b078 | 
					
						
							|  |  |  | - https://github.com/spring-projects/spring-framework/commit/1d9d3e6ff79ce9f0eca03b02cd1df705925575da | 
					
						
							|  |  |  | - https://github.com/spring-projects/spring-framework/commit/8e0b1c3a5f957af3049cfa0438317177e16d6de6 | 
					
						
							|  |  |  | - https://github.com/spring-projects/spring-framework/commit/b787a68f2050df179f7036b209aa741230a02477 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | ## Run the Final Checklist
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Run all tests prior to submission
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | See the [building from source][] section of the `README` for instructions. Make | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | sure that all tests pass prior to submitting your pull request. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Submit your pull request
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Subject line: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Follow the same conventions for pull request subject lines as mentioned above | 
					
						
							|  |  |  | for commit message subject lines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In the body: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Explain your use case. What led you to submit this change? Why were existing | 
					
						
							|  |  |  |     mechanisms in the framework insufficient? Make a case that this is a | 
					
						
							|  |  |  |     general-purpose problem and that yours is a general-purpose solution, etc. | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | 1. Add any additional information and ask questions; start a conversation or | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  |     continue one from JIRA | 
					
						
							|  |  |  | 1. Mention the JIRA issue ID | 
					
						
							|  |  |  | 1. Also mention that you have submitted the CLA as described above | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that for pull requests containing a single commit, GitHub will default the | 
					
						
							|  |  |  | subject line and body of the pull request to match the subject line and body of | 
					
						
							|  |  |  | the commit message. This is fine, but please also include the items above in the | 
					
						
							|  |  |  | body of the request. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Mention your pull request on the associated JIRA issue
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Add a comment to the associated JIRA issue(s) linking to your new pull request. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 18:16:47 +08:00
										 |  |  | ### Expect discussion and rework
 | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | The Spring team takes a very conservative approach to accepting contributions to | 
					
						
							|  |  |  | the framework. This is to keep code quality and stability as high as possible, | 
					
						
							|  |  |  | and to keep complexity at a minimum. Your changes, if accepted, may be heavily | 
					
						
							|  |  |  | modified prior to merging. You will retain "Author:" attribution for your Git | 
					
						
							|  |  |  | commits granted that the bulk of your changes remain intact. You may be asked to | 
					
						
							|  |  |  | rework the submission for style (as explained above) and/or substance. Again, we | 
					
						
							|  |  |  | strongly recommend discussing any serious submissions with the Spring Framework  | 
					
						
							|  |  |  | team _prior_ to engaging in serious development work. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that you can always force push (`git push -f`) reworked / rebased commits | 
					
						
							| 
									
										
										
										
											2014-02-28 22:40:13 +08:00
										 |  |  | against the branch used to submit your pull request. In other words, you do not | 
					
						
							|  |  |  | need to issue a new pull request when asked to make changes. | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | [help documentation]: http://help.github.com/send-pull-requests | 
					
						
							| 
									
										
										
										
											2014-03-10 19:24:20 +08:00
										 |  |  | [JIRA issue tracker]: https://jira.spring.io/browse/SPR | 
					
						
							| 
									
										
										
										
											2012-09-18 19:53:40 +08:00
										 |  |  | [spring-framework-contrib]: https://groups.google.com/forum/#!forum/spring-framework-contrib | 
					
						
							|  |  |  | [SpringSource CLA form]: https://support.springsource.com/spring_committer_signup | 
					
						
							|  |  |  | [fork-and-edit]: https://github.com/blog/844-forking-with-the-edit-button | 
					
						
							| 
									
										
										
										
											2014-02-28 22:50:31 +08:00
										 |  |  | [Spring Framework Code Style]: https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Code-Style | 
					
						
							| 
									
										
										
										
											2014-03-01 00:43:18 +08:00
										 |  |  | [Rewriting History section of Pro Git]: http://git-scm.com/book/en/Git-Tools-Rewriting-History | 
					
						
							|  |  |  | [Commit Guidelines section of Pro Git]: http://git-scm.com/book/en/Distributed-Git-Contributing-to-a-Project#Commit-Guidelines | 
					
						
							| 
									
										
										
										
											2014-03-01 00:21:54 +08:00
										 |  |  | [building from source]: https://github.com/spring-projects/spring-framework#building-from-source |