
As announced in the IzPack news, I have made available some IzPack Git repositories on GitHub.
The idea is not to run away from the Subversion repository that we host at Codehaus, but rather to provide a distributed SCM option. Indeed, I am using the Git features that allow a 2-way synchronization between Subversion and Git.
The whole idea is to try to leverage Git to break the barrier between developers and contributors, as with Subversion one needs to be a commiter. Also, I expect that the easy branching in Git will favour experimentations and staging of patches before they get properly incorporated into our Subversion codebase.
I have to admit that I have never been a huge fan of Git, as its interface is not really user-friendly, and it is less at ease on Windows. While one can easily use Git on basic workflows, it helps a lot to have some computer science knowledge as you try to use more complicated functionnalities of the tool. Indeed you should understand how Git works internally if you want to avoid misusing them. In this regard Mercurial is a much better tool.
One thing that won me to play with Git is simply GitHub. It offers some really neat features such as online editing / commiting, commenting on commits (useful for peer-reviewing) and the ability for people to fork projects and facilitate interactions between developers.
There are 3 repositories:
- https://github.com/jponge/izpack/tree
- https://github.com/jponge/izpack-launcher/tree
- https://github.com/jponge/izpack-utils/tree
You will notice that the ‘izpack’ repository contains a special branch called ‘with-git-submodules’. The IzPack Subversion repository leverages ’svn:externals’ to fetch the other two projects (IzPack launcher and IzPack utilities). Git has a notion of submodules, but it fails to commit back to Subversion if you have submodules in the current branch, which is really anoying. That’s why only this branch has the submodules and will be kept in sync with the master and trunk-clone branches.
Feel-free to grab a GitHub account and fork the projects!