Development getting started » History » Version 17
Version 16 (johu, 09/03/2010 10:59 AM) → Version 17/18 (Anonymous, 03/07/2013 07:36 PM)
h1. Getting started
{{toc}}
This guide guide describes how you get involved as new developer. If you only want to contribute patches you can checkout following guide about
[[development_git_patches|Git patches]]
h2. Redmine
No source code change without an issue. Quassel project manages bugs and features with the redmine plattform. To get open issue (bug or feature) assigned, you have to setup account here on http://bugs.quassel-irc.org.
"register here":http://bugs.quassel-irc.org/account/register
Please choose a nick is identical or similar to your irc nick.
h2. Git
Install git on your operation system and configure it.
<pre>
git config --global user.name "First name and last name"
git config --global user.email registered@email.example.com
</pre>
Optional you can switch colorful output on.
<pre>
git config --global color.ui auto
</pre>
h2. Github
Gitorious
h3. Setup account
"register here":http://github.com here":http://gitorious.org/users/new
Please choose a nick is identical or similar to your irc nick.
h3. quassel clone
Setup your personal clone of quassel. Fork the repository at http://github.com/quassel/quassel/ Go to http://gitorious.org/quassel/quassel/clone and choose a name like yournicks-quassel.
Switch to preferred directory for your projects like <code>/home/yournick/projects</code>. Now you can clone the personal quassel clone to local machine.
<pre>
git clone https://github.com/yournick/quassel.git git://gitorious.org/~yournick/quassel/yournicks-quassel.git
</pre>
h3. ssh key
To push changes you will need a SSH key pair. To generate it on linux type the command:
<pre>
ssh-keygen -t rsa
</pre>
For more details or if you're on On Windows or OSX you can check the "github help":https://help.github.com/articles/generating-ssh-keys "official faq":http://gitorious.org/about/faq for more info. a solution.
After following instructions, you should now have a private key like id_rsa id_dsa and public key *id_rsa.pub* *id_dsa.pub* in your _~/.ssh/_. Upload the *public* public key in your github gitorious account settings: https://github.com/settings/ssh options. http://gitorious.org/~yournick/keys/new
h3. ssh agent
_TODO_
h2. Workflow
h3. First step
Get and issue to work on. If you have proper rights on redmine assign assign self, otherwise ask in irc to get it.
h3. Create branch
Remember do not work on master branch. Just create one branch for one.
<pre>git branch branch_issue_x</pre>
h3. Switch to branch
<pre>git checkout branch_issue_x</pre>
h3. Implementation
Work on this checkout - follow the normal development workflow...
h3. Commit
Commit changes to your local checkout
<pre>git commit -a</pre>
Please try to merge all your commits to one.
_TODO EXAMPLE COMMAND_
*Note*: If you add _fixes #issue-number_ issue-number_ to your commit message, redmine will close your issue with the issue number.
h3. Publish
To publish your changes just push it to github. -You gitorious. You will need running ssh-agent with your private ssh key as described above.- above.
<pre>git push git@github.com:yournick/quassel.git git@gitorious.org:~yournick/quassel/yournicks-quassel.git branch_issue_x</pre>
h3. Pull Merge request
To submit your changes just create a pull merge request on github gitorious by clicking on going to your clone page and selecting *Request merge* in the 'Pull request' button that's shown in several places. Alternatively just go to https://github.com/yournick/quassel/pull/new/branch_issue_x menu.
h3. Cleanup
If your merge request is applied, you can delete your branch.
* local branch
<pre>git branch -D branch_issue_x</pre>
* remote branch
<pre>git push git@github.com:yournick/quassel.git git@gitorious.org:~yournick/quassel/yournicks-quassel.git :branch_issue_x</pre>
h3. Stay up to date
* Follow the main development branch by adding it as remote branch.
<pre>git remote add upstream git://github.com/quassel/quassel.git</pre> git://gitorious.org/quassel/quassel.git</pre>
* Update by pulling from the remote.
<pre>git pull --rebase upstream master</pre>
Now you can push the changes to your remote as described.
*Note* You should only push these changes to your remote master. *Do not push other changes to your master.*
{{toc}}
This guide guide describes how you get involved as new developer. If you only want to contribute patches you can checkout following guide about
[[development_git_patches|Git patches]]
h2. Redmine
No source code change without an issue. Quassel project manages bugs and features with the redmine plattform. To get open issue (bug or feature) assigned, you have to setup account here on http://bugs.quassel-irc.org.
"register here":http://bugs.quassel-irc.org/account/register
Please choose a nick is identical or similar to your irc nick.
h2. Git
Install git on your operation system and configure it.
<pre>
git config --global user.name "First name and last name"
git config --global user.email registered@email.example.com
</pre>
Optional you can switch colorful output on.
<pre>
git config --global color.ui auto
</pre>
h2. Github
Gitorious
h3. Setup account
"register here":http://github.com here":http://gitorious.org/users/new
Please choose a nick is identical or similar to your irc nick.
h3. quassel clone
Setup your personal clone of quassel. Fork the repository at http://github.com/quassel/quassel/ Go to http://gitorious.org/quassel/quassel/clone and choose a name like yournicks-quassel.
Switch to preferred directory for your projects like <code>/home/yournick/projects</code>. Now you can clone the personal quassel clone to local machine.
<pre>
git clone https://github.com/yournick/quassel.git git://gitorious.org/~yournick/quassel/yournicks-quassel.git
</pre>
h3. ssh key
To push changes you will need a SSH key pair. To generate it on linux type the command:
<pre>
ssh-keygen -t rsa
</pre>
For more details or if you're on On Windows or OSX you can check the "github help":https://help.github.com/articles/generating-ssh-keys "official faq":http://gitorious.org/about/faq for more info. a solution.
After following instructions, you should now have a private key like id_rsa id_dsa and public key *id_rsa.pub* *id_dsa.pub* in your _~/.ssh/_. Upload the *public* public key in your github gitorious account settings: https://github.com/settings/ssh options. http://gitorious.org/~yournick/keys/new
h3. ssh agent
_TODO_
h2. Workflow
h3. First step
Get and issue to work on. If you have proper rights on redmine assign assign self, otherwise ask in irc to get it.
h3. Create branch
Remember do not work on master branch. Just create one branch for one.
<pre>git branch branch_issue_x</pre>
h3. Switch to branch
<pre>git checkout branch_issue_x</pre>
h3. Implementation
Work on this checkout - follow the normal development workflow...
h3. Commit
Commit changes to your local checkout
<pre>git commit -a</pre>
Please try to merge all your commits to one.
_TODO EXAMPLE COMMAND_
*Note*: If you add _fixes #issue-number_ issue-number_ to your commit message, redmine will close your issue with the issue number.
h3. Publish
To publish your changes just push it to github. -You gitorious. You will need running ssh-agent with your private ssh key as described above.- above.
<pre>git push git@github.com:yournick/quassel.git git@gitorious.org:~yournick/quassel/yournicks-quassel.git branch_issue_x</pre>
h3. Pull Merge request
To submit your changes just create a pull merge request on github gitorious by clicking on going to your clone page and selecting *Request merge* in the 'Pull request' button that's shown in several places. Alternatively just go to https://github.com/yournick/quassel/pull/new/branch_issue_x menu.
h3. Cleanup
If your merge request is applied, you can delete your branch.
* local branch
<pre>git branch -D branch_issue_x</pre>
* remote branch
<pre>git push git@github.com:yournick/quassel.git git@gitorious.org:~yournick/quassel/yournicks-quassel.git :branch_issue_x</pre>
h3. Stay up to date
* Follow the main development branch by adding it as remote branch.
<pre>git remote add upstream git://github.com/quassel/quassel.git</pre> git://gitorious.org/quassel/quassel.git</pre>
* Update by pulling from the remote.
<pre>git pull --rebase upstream master</pre>
Now you can push the changes to your remote as described.
*Note* You should only push these changes to your remote master. *Do not push other changes to your master.*