GeoTools : Transition to GitHub


Jody Garnett


GEOT-4156 Transition to GitHub


git ready


As per our blog post on the topic:

Hi all,
the GeoTools developers have been working, so far, with Subversion as the main version control system. However various core developers have been using Git as a SVN client for quite some time so far, and an [official mirror|] of Geotools, automatically kept in synch with Subversion, is already available on GitHub.

We are now considering switching permantently from Subversion to Git, meaning the Subversion repository will eventually be abandoned and only the Git official central repo will be kept up to date.
Before making such move we'd like to hear from the users community, please take one minute to share your opinion about the switch to Git:

click here to go to the poll


The results of this poll were:

 I'd prefer you to keep on using SVN17
It's the same to me14
I'd like Mecurial better6
 I'd like Bazaar better0
Switching to Git is Great64

The poll generated 212 votes (this is greater than our number of comitters!)


This is not a suggestion to move to git - it is a proposal to move to github:
* uDig found that using worked out well - but still failed due to lack of documentation. Indeed most advice on using git comes from the github docs; stack exchange where github is always used as an example.
* The ease of use of the "fork me" / "pull request" workflow provides the critical glue to allow an open source project to work; as distributed version control no longer provides the motivation for contributors to obtain direct commit access.
* github is simply fashionable. Anecdotal evidence of this is an "if it is not on github must be dead" attitude encountered on IRC

There are three more hesitations which have now been resolved:

1) The active developers needed to be comfortable with the use of git. This has now taken place.
2) We needed a good story to tell for windows developers. With the release of the we now have a sensible suggestion.
3) GeoTools 8

Additional discussion and support on the email list:

Checklist form justin:

  • a quick primer for people with sample commands for common tasks
  • a list of git does and donts, ie don't rebase on a public branch, etc... 
  • line endings figured out re Bens comment
  • a way to get git revision info from the build... we currently have an svn plugin that does this but no git equivalent, there is a plugin but it turned out to be pretty flaky so we ditched it
  • decide on hosting, are we ok with github?


This proposal is under construction; and won't be submitted until the tasks are sorted out and GeoTools 8 is released.

Voting has not started yet:


This section is used to make sure your proposal is complete (did you remember documentation?) and has enough paid or volunteer time lined up to be a success


no progress






lack mandate/funds/time


volunteer needed

  1. JD: Update the documentation for checkout and build (can use the uDig docs as a good starting point for this)
    • (tick) Source Code Try out the docs using the official github fork
    • (tick) Using Git Do we need the Fork me instructions here? With a link to developers guide?
  2. JD: (tick) Update the developers guide with a note about pull requests; and any other requirements:
  3. JD: (tick) Update the build procedure:
    • Maven: a way to get git revision info from the build...
    • Hudson: update the scripts to pull from git
  4. JD: Transition the repository - July 1st Weekend 
    • (tick) Contact github about the size of the repository; uDig experience shows this will be fine - but it is good to ask.
    • Set up a GeoTools organisation (PSC members as group owners), with a group for commiter
    • (tick) Do westart from the official github fork? YES (If we need to grab anything else we will do so on request)
    • (warning) Make the old repository read only
    • Turn on github
  5. JD: (tick) Transition comitters
    • Grab the comitter list from OSGeo servers; send out an email asking for github IDs
    • Create GeoTools PSC and GeoTools Committers Groups (uDig organisation is an example here)
    • Add github IDs as appropriate
  6. JD: (tick) Transition the build machinery
    • hudson configuration
    • release scripts
  7. JD: Release 8.0-RC2 form the new repository to show we made it
    • Update any of justin's automated scripts
    • Update the how to cut a release page in the docs