Integration Manager Workflow
The OpenWSN project uses the Integration Manager Workflow (see http://git-scm.com/about/distributed):
- a small number of integration managers commit to the
develop branch of the different repositories.
- developers fork that repository, push to their own independent repositories, and submit a pull request to pull in their changes.
This is a very common type of development model seen with open source or GitHub repositories.
As a Developer
If you are a developer who wants to contribute to the OpenWSN project, the following workflow has proven to work well:
- Create an issue at https://openwsn.atlassian.net. Let's call it "FW-123"
- Assign it to yourself
- Click the "start progress" button
- Your issue is now marked "in progress". This ensures people know you're working on a fix.
- Fork the repository you want to modify under your username
- Navigate to the the repository you want to modify, on GitHub. Click the "fork" button
- This will create an exact copy of the entire repository, but under your name. That is, "https://github.com/openwsn-berkeley/openwsn-fw" is forked to "https://github.com/myusername/openwsn-fw".
- Optionally, rename your fork
- Implement a fix for the issue
- When you're done
- Merge the main repository into your fork one last time,
- From the GitHub interface, create a pull request by clicking the "create pull request" button
- In the issue tracker, click the "Resolve Issue".
- Your issue will now appear as "resolved"
- This tells everybody you consider being done. Normally, you have nothing else to do.
- The integration managers now merge your fork into the main code
- If people have comments on your fix, you can discuss directly through GitHub. This can be done line-by-line, making discussion and commenting extremely efficient.
- If you want to make further changes, no need to close the pull request, just continue making changes to your branch, your pull request will reflect those further changes automatically.
- Once the discussion is over and you have done final adjustments to your code, the integration manager merges your pull request into the main repository. On GitHub, your pull request now appears as "merged"
- The integration manager marks your issue as "closed".
- You can now delete your fork.