This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
developing_in_branches [2012/03/19 08:36] aseques |
developing_in_branches [2013/03/21 10:00] nuxwin review |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | === Workflow === | + | === Introduction === |
- | i-mscp development is happening on github, the use of git allow the developers to use their own branches for new features, making easier to keep in sync with current development. | + | This document intends to give few information about how to contribute to the i-MSCP project. |
- | This is a small guide to help you getting started with git development in i-mscp | + | The i-MSCP development team is using git as version control management system. All i-MSCP git repositories are hosted on Github, allowing any user to fork them and submit patches. |
- | * Create an account in http://github.com | + | === How to start === |
- | * Fork the project i-mscp | + | If you want contribute to the i-MSCP project, you must first fork the development branch located at [[https://github.com/i-MSCP/imscp]]. In order, you must do the following: |
- | The project url is [[https://github.com/i-MSCP/imscp|this one]], by forking, you only create clone of the project on wich you have commit rights. | + | |
- | * Clone the original github reposotory | + | * Create an account on [[https://github.com/i-MSCP/imscp|Github]] |
- | You can follow the instructions [[http://trac.i-mscp.net/wiki/releases_git|here]] | + | * Create a fork of the i-MSCP development branch located at [[https://github.com/i-MSCP/imscp]] |
+ | * Clone your fork on your local system | ||
- | * Change the cloned repositort to use your fork | + | The latest task can be done like this on your local system: |
- | git remote set-url origin https://your_name@github.com/your_name/imscp.git | + | git clone git://github.com/<your_username>/imscp.git |
- | * Create a branch for your great feature | + | Once you did that, it's also recommended to create a specific feature branch. For instance, if you want create a new feature for i-MSCP called **new-feature**, just create the new-feature branch as follow: |
- | git branch great_feature | + | git branch new-feature |
+ | |||
+ | And then, you can start to add/modify files. See http://gitref.org/ to learn more about how to work with git. | ||
+ | When your work is ready, you can do a pull request to ask the i-MSCP development team to merge your works in the developement branch. This can be done from the Github interface. See [[https://help.github.com/articles/using-pull-requests|Howto do a pull request]] | ||
- | * Add the modified files that you want to be commited | + | === Keep your fork synced with the upstream branch === |
- | git add changed_file1.txt changed_file2.txt | + | Sometimes is takes a while to merge your changes with upstream, a good way to sync your branch with the upstream is to add a second remote url (the upstream repository) and periodically fetch the changes from there: |
- | * Commit your changes (locally) | + | * Add the upstream (official) code into your server (needed to rebase) |
- | + | ||
- | git commit -m "Commit message" | + | |
- | + | ||
- | * Push the changes to your fork (using the created branch name) | + | |
- | + | ||
- | git push origin great_feature | + | |
- | + | ||
- | * From github interface, ask for a pull request, so it can be integrated on master. | + | |
- | + | ||
- | === Keep in sync with upstream code === | + | |
- | Sometimes is takes a while to merge your changes with upstream, a good way to sync your branch with the upstream is to add a second remote url (the upstream repositorie) and periodically fetch the changes from there: | + | |
- | + | ||
- | * Adding the upstream repostory | + | |
git remote add upstream https://github.com/i-MSCP/imscp.git | git remote add upstream https://github.com/i-MSCP/imscp.git | ||
- | * Fetch any new changes from the original repo | + | * Fetch any new changes from the original repository |
git fetch upstream | git fetch upstream | ||
- | * Merge the upstrem code with yours, no more steps if there aren't code conflicts. | + | * Merge the upstream code with yours, no more steps if there aren't code conflicts. |
git merge upstream/master | git merge upstream/master |