The sources of the Groovy project are hosted on Codehaus Git infrastructure.
- You can browse the sources online: http://git.codehaus.org/gitweb.cgi?p=groovy-git.git
- And you can learn about the repository details on the Xircles Codehaus admin interface: http://xircles.codehaus.org/projects/groovy/repo/git/repo
Additionally, the sources are mirrored on GitHub: https://github.com/groovy/groovy-core
If you're interested in contributing, you can send us GitHub pull requests, or submit patches through JIRA. Please see our contribution page for more.
You can also get the sources for each releases in the form of a zip archive. Please head to our download section to download those source packages.
Checkout the code
First of all, you'll need to have Git installed on your machine, whether through the support of your IDE, or as a command-line tool.
If you want to checkout the source code of Groovy, there are two different URLs you can use:
- if you're a Groovy developer, please use: ssh://firstname.lastname@example.org/groovy-git.git
- otherwise, use the anonymous access: git://git.codehaus.org/groovy-git.git
From the command-line, if you're a Groovy developer, you can use the command:
git clone ssh://email@example.com/groovy-git.git
Or for anonymous access:
git clone git://git.codehaus.org/groovy-git.git
You can checkout different branches, in particular:
masteris the latest Groovy branch, for the upcoming major version
GROOVY_1_8_Xis the branch of the curret Groovy 1.8.x versions (current stable version)
GROOVY_1_7_Xis the branch for the previous official version of Groovy 1.7.x
For fetching a branch the first time, simply use:
git fetch origin
To checkout a particular branch:
git checkout master git checkout GROOVY_1_8_X git checkout GROOVY_1_7_X
Developers: Make sure your SSH information is up-to-date in Xircles and that your SSH key is available to your command-line client or IDE integration.
Committing your changes (developers)
Use the commit command:
git commit -m "Your commit message"
Picking commits from another branch
Say you have committed your changes on
master and want to merge a particular comming on
GROOVY_1_8_X, you can procede as follows:
git checkout master git commit -m "Fixed GROOVY-1234" // this would return a12bc3... as commit number git checkout GROOVY_1_8_X git cherry-pick a12bc3
To see what's the status of your source tree, you can call:
And if you want to see all the latest commits that you have locally, you can do:
To retrieve the changes that have been pushed to the server, you can do:
Of more explicitely:
git pull origin master
Pushing your changes upstream
The various commits you've made are done locally, now is the time to share them with the world by pushing your changes:
git push git push origin master
If you're a Groovy despot, you can also push your changes to github. But for that, first, you'll have to have configured an additional remote with:
git remote add github firstname.lastname@example.org:groovy/groovy-core.git
Then you can push the changes back to GitHub as well:
git push github master
Pushing a local branch to the remote repository
To push a local branch to the Codehaus Git repository or on the GitHub mirror, you can do the following:
git push origin myLocalBranch git push github myLocalBranch
Merging pull requests from GitHub
Contributors might bring their contributions in the form of "pull requests" on our GitHub mirror.
Groovy despots can merge the pull requests on GitHub through the web interface by following this proposed workflow:
// create a new branch to test the pull request git checkout -b test_foopatch_onto_1_8 // now you are on branch test_foopatch_onto_1_8 // let's add the git branch of the contributor as a remote git remote add someperson git://github.com/groovy/somepersonsrepo.git // fetch the particular commits git fetch someperson the_branch_with_the_changes // merge it in our test branch git merge FETCH_HEAD // test the changes gradle test or gradle test // if all tests pass, then we can safely use the web based merge UI of Github
If you want to learn more about Git, there are many available resources online, such as: