Now that all Castle projects are hosted on GitHub
, it's even easier to start contributing fixes to the project.
Let's walk through the steps to make it easy for all of us!
Let's say you want to submit a patch for the MonoRail project
.Step 1: Sign up for GitHub
(jump on it)
Step 2: Fork the MonoRail project repository
(become a committer of your very own copy of MonoRail!)
Step 3: Setup your local dev environment
(one time only)
Step 4: Clone and modify your fork locally
Step 5: When you're ready it's time to commit your changes to github
- Open a command-line and CD to your code folder (where you keep all your other projects)
git clone YourPrivateGitAddress (you can find your private git address on your main github page, it should look something like email@example.com:YourGithubUsername/MonoRail.git)
- It should now start pulling down your repository. It was most likely named 'MonoRail', so it'll create a 'MonoRail' folder under your code folder.
- CD to the MonoRail folder. Do a 'dir' and you should see the Visual Studio solution file for the MonoRail project.
- Open the MonoRail solution and do the fixes in Visual Studio! Remember the code has to comply with our coding standards and "done" criteria of the project you're contributing to. Also, we strongly encourage that you include test cases.
Step 6: Submit a Pull Request
- Open a command-line and CD to the MonoRail folder
git commit -am "my commit message"
- The commit message should include a reference to an issue if applicable
git push origin master
(tell the Castle team why your change rocks)
Step 7: Add a link to your commit to the issue on the Issue Tracker if applicable
- Click "Pull Request"
- Enter a Message that will go with your commit to be reviewed by core committers
- Leave the default recipients ticked
- Click "Send Pull Request"
(tell everyone you're on the case)
Step 8: Eat a cookie
Now if you need to change multiple files as part of one commit, the web interface will not be the way to go. In that case you'll want to learn a little more about GitHub and git. You can start here: