blob: d9b4f0409a3cb67319d4f7d4f1b24ea98e9895cd [file] [log] [blame]
//
// 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.
//
=== Github Contributions
Some people prefer to make contributions to karaf source via github. If you are one of them, this is for you!
==== Introduction
Apache Karaf is available as a periodically replicated mirror on: https://github.com/apache/karaf
==== Suggested Workflow
. Make a fork of karaf repo github mirror
. Do all your new work on your own karaf fork
. When ready, file a Jira issue https://issues.apache.org/jira/browse/KARAF, attach the link to your github pull request, and ask for a review
. One of karaf committers will discuss your pull request on github; and at some point your pull request will be accepted
. When your pull request is accepted, squash it into a single commit and attach single patch file to the original jira, with ASF grant check box selected
. Now pray to your favorite ASF committer to really accept the patch :-)
. When your patch is committed to the svn, and you can verify it in the latest karaf snapshot, close your pull request on github
==== License Reminder
In order for your contributions to be accepted:
* All files must contain ASL license grant header
* You must select ASF grant check box when attaching patch to the jira
==== How to Generate a One-File-Patch Via Throw-Away Branch
Here is one way to generate squash of your commits:
http://stackoverflow.com/questions/616556/how-do-you-squash-commits-into-one-patch-with-git-format-patch
----
#
# 'archon' referers to karaf mirror
# 'origin' referers to your own fork
#
# attach karaf mirror as remote, if not done yet
git remote add archon https://github.com/apache/karaf
# fetch latest karaf mirror
git fetch archon
# ensure you are on your fork trunk
git checkout origin/trunk
# kill previous patch delivery, if you had one
git branch -D delivery
# make new delivery throw-away branch, based on latest karaf mirror
git branch delivery archon/trunk
# use it
git checkout delivery
# squash all your local development into a single commit
git merge --squash trunk
# commit it to the delivery branch
git commit -m "delivery"
# generate a patch file against the mirror
git format-patch archon/trunk
----
The root of your Karaf source now contains a file named "0001-delivery.patch.txt" (please attach the .txt ending;this will allow commiters to open your patch directly in the browser and give it a short look there) which you should attach to your karaf jira.