Updated dev docs regarding branching and pull requests CTR
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/4ed00952 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/4ed00952 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/4ed00952 Branch: refs/heads/TINKERPOP-1404 Commit: 4ed009525ba3c0bed01fd2331b54ee1dbb76284c Parents: 75baf01 Author: Stephen Mallette <sp...@genoprime.com> Authored: Fri Sep 16 10:14:59 2016 -0400 Committer: Stephen Mallette <sp...@genoprime.com> Committed: Fri Sep 16 10:14:59 2016 -0400 ---------------------------------------------------------------------- docs/src/dev/developer/contributing.asciidoc | 6 +- docs/src/dev/developer/for-committers.asciidoc | 83 ++++++++++++++++++--- 2 files changed, 76 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4ed00952/docs/src/dev/developer/contributing.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/dev/developer/contributing.asciidoc b/docs/src/dev/developer/contributing.asciidoc index 36124f1..63c40b7 100644 --- a/docs/src/dev/developer/contributing.asciidoc +++ b/docs/src/dev/developer/contributing.asciidoc @@ -179,9 +179,9 @@ link:https://github.com/apache/tinkerpop[GitHub repository] if not already done. . Make changes in the fork .. It is typically best to create a branch for the changes. Consider naming that branch after the JIRA issue number to easily track what that branch is for. -.. Consider which branch to create the branch from in the first place. In other words, is the change to be targetted -at a specific TinkerPop version (e.g. a patch to an older version)? When in doubt, please ask on -d...@tinkerpop.apache.org. +.. Consider which release branch (e.g. `master`, `tp31` etc) to create the development branch from in the first place. +In other words, is the change to be targetted at a specific TinkerPop version (e.g. a patch to an older version)? When +in doubt, please ask on d...@tinkerpop.apache.org. . Build the project and run tests. .. A simple build can be accomplished with maven: `mvn clean install`. .. Often, a "simple build" isn't sufficient and integration tests are required: http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/4ed00952/docs/src/dev/developer/for-committers.asciidoc ---------------------------------------------------------------------- diff --git a/docs/src/dev/developer/for-committers.asciidoc b/docs/src/dev/developer/for-committers.asciidoc index fa88070..9c5059c 100644 --- a/docs/src/dev/developer/for-committers.asciidoc +++ b/docs/src/dev/developer/for-committers.asciidoc @@ -60,13 +60,18 @@ change. Changes that break the public APIs should be marked with a "breaking" label and should be distinguished from other changes in the release notes. +[[branches]] Branches -------- -The "master" branch is used for the main line of development and release branches are constructed as needed -for ongoing maintenance work. If new to the project or are returning to it after some time away, it may be good -to send an email to the developer mailing list (or ask on HipChat) to find out what the current operating branches -are. +TinkerPop has several release branches: + +* `tp30` - 3.0.x (no longer maintained) +* `tp31` - 3.1.x (bug fixes and documentation updates only) +* `master` - 3.2.x + +Changes to `tp31` should merge to `master`. Please read more about this process in the <<pull-requests, Pull Requests>> +section. Other branches may be created for collaborating on features or for RFC's that other developers may want to inspect. It is suggested that the JIRA issue ID be used as the prefix, since that triggers certain automation, and it provides a @@ -200,8 +205,8 @@ Review then Commit ------------------ Code modifications must go through a link:http://www.apache.org/foundation/glossary.html#ReviewThenCommit[review-then-committ] (RTC) -process before being merged into a release branch. All committers should follow the pattern below, where "you" refers to the -committer wanting to put code into a release branch. +process before being merged into a release branch. All committers should follow the pattern below, where "you" refers +to the committer wanting to put code into a release branch. * Make a JIRA ticket for the software problem you want to solve (i.e. a fix). * Fork the release branch that the fix will be put into. @@ -210,7 +215,7 @@ committer wanting to put code into a release branch. * When your fix is complete and ready to merge, issue a link:https://git-scm.com/docs/git-request-pull[pull request]. ** Be certain that the test suite is passing. ** If you updated documentation, be sure that the `process-docs.sh` is building the documentation correctly. -* Before you can merge your branch into the release branch, you must have at least 3 +1 link:http://www.apache.org/foundation/glossary.html#ConsensusApproval[consensus votes]. +* Before you can merge your branch into the release branch, you must have at least 3 +1 link:http://www.apache.org/foundation/glossary.html#ConsensusApproval[consensus votes] from other committers. ** Please see the Apache Software Foundations regulations regarding link:http://www.apache.org/foundation/voting.html#votes-on-code-modification[Voting on Code Modifications]. * Votes are issued by TinkerPop committers as comments to the pull request. * Once 3 +1 votes are received, you are responsible for merging to the release branch and handling any merge conflicts. @@ -236,10 +241,11 @@ When the committer chooses CTR, it is considered good form to include something that CTR was invoked and the reason for doing so. For example, "Invoking CTR as this change encompasses minor adjustments to text formatting." -Pull Request Format -~~~~~~~~~~~~~~~~~~~ +[[pull-requests]] +Pull Requests +~~~~~~~~~~~~~ -When you submit a pull request, be sure it uses the following style. +When submitting a pull request to one of the <<branches, release branches>>, be sure it uses the following style: * The title of the pull request is the JIRA ticket number + "colon" + the title of the JIRA ticket. * The first line of the pull request message should contain a link to the JIRA ticket. @@ -254,6 +260,63 @@ When you submit a pull request, be sure it uses the following style. ** These types of "on merge tweaks" are typically done to extremely dynamic files to combat and merge conflicts. * If you are a TinkerPop committer, you can VOTE on your own pull request, so please do so. +A pull request will typically be made to a target <<branches, branch>>. Assuming that branch is upstream of other +release branches (e.g. a pull request made to for the branch containing 3.1.x must merge to the branch that releases +3.2.x), it is important to be sure that those changes are merged to the downstream release branches. Typicaly, +this process is best handled by multiple pull requests: one to each release branch. + +As an example, consider a situation where there is a feature branch named "TINKERPOP-1234" that contains a fix for +the `tp31` branch: + +[source,bash] +---- +`git checkout -b TINKERPOP-1234 tp31` +// do a bunch of stuff to implement TINKERPOP-1234 and commit/push +git checkout -b <TINKERPOP-1234-master> master +git merge TINKERPOP-1234 +---- + +At this point, there are two branches, with the same set of commits going to `tp31` and `master`. Voting will occur +on both pull requests. After a successful vote, it is time to merge. If there are no conflicts, then simply `git merge` +both pull requests to their respective branches. If there are conflicts, then there is some added work to do - time to +rebase: + +[source,bash] +---- +git checkout TINKERPOP-1234 +git rebase origin/tp31 +---- + +Depending on the conflict, it might be a good idea to re-test before going any further, otherwise: + +[source,bash] +---- +git push origin TINKERPOP-1234 --force +---- + +Now, `git rebase` has re-written the commit history, which makes a mess of the other pull request to master. This +problem is rectified by essentially re-issuing the PR: + +[source,bash] +---- +git checkout TINKERPOP-1234-master +git reset --hard origin/master +git merge TINKERPOP-1234 +---- + +Again, depending on the changes, it may make sense to re-test at this point, otherwise: + +[source,bash] +---- +git push origin TINKERPOP-1234-master --force +---- + +It should not be safe to merge both pull requests to their release branches. + +IMPORTANT: Always take a moment to review the commits in a particular pull request. Be sure that they are *all* related +to the work that was done and that no extraneous commits are present that cannot be explained. Ensuring a pull request +only contains the expected commits is the responsibility of the committer as well as the reviewer. + [[dependencies]] Dependencies ------------