5 Replies Latest reply on Mar 25, 2011 12:02 PM by objectiser

    Moving code to git

    objectiser

      A number of jboss.org projects have moved from svn to git (generally hosted at github), due to the benefits that can be obtained from using a distributed version control system.

       

      Its possible this could benefit the Scribble project, in that it could more easily allow different research groups to maintain their own forks, without having to necessarily (1) provide changes through patches, or (2) sign a contributor agreement and be given commit rights to the svn repository.

       

      As the work of these separate groups mature, it can be pushed back to the master repository to become part of the main distribution.

       

      I don't have a great deal of experience using git at the moment, but recently migrated the Savara (version 2) codebase to github. So this change does not necessarily have to be considered at the moment - but as Scribble will integrate into Savara and also as part of JBoss Tools, and both of these projects are now hosted on github, it may be a good idea.

       

      One issue is the tooling for git is not as well established as svn - however the merging capabilities are apparently significantly better.

       

      Thoughts?

        • 1. Moving code to git
          perneto

          I'm already using Mercurial, and I find distributed VCS much more convenient than SVN generally. Apart from merging, other advantages include offline operation, low-cost branching, and easy cleanup of history. This encourages frequent small commits, making it easy to manage individual changes as indiidual commits.

           

          In short: +1!

          • 2. Moving code to git
            objectiser

            Ok then the other aspect of this is whether to split up the current Java code base into smaller repositories.

             

            - The pro for this is that then each repository is smaller and more focused on a particular need.

            - The con is that we may end up with many repositories if we start to expand the languages supported.

             

            For Savara, which used to have a similar layout as Scribble, I divided the code into the following:

             

            Core - included the OSGi bundles that were environment independent, and would be deployed to Nexus as their primary mechanism for release

            Eclipse tools - provides the Eclipse plugins. Release is via generating an update site

            Server integration - builds a distribution that can be deployed into a server (currently just JBossAS), to integrate core capabilities into the server

             

            So the only difference I see with Scribble is that instead of integration into a server, it provides a command line execution. Therefore for scribble we could have:

             

            Scribble-core - core bundles deployed to Nexus

            Eclipse tools - integration with Eclipse, provided via update site

            Command line tools - provided as a zip distribution

             

            These would be language specific, although as these are the first repositories, possibly they don't need to explicitly state 'java' in the repo name - with subsequent languages adding the language as necessary?

            • 3. Moving code to git
              perneto

              I'm only using the core code, so it would be nicer for me to have this core/eclipse/command line tools split. I don't mind too much if we stay with the current scheme, either.

              • 4. Moving code to git
                objectiser

                Core modules have now been ported to https://github.com/scribble/scribble-core

                 

                Hudson build job is here: http://hudson.jboss.org/hudson/job/scribble-core-master/

                 

                Other parts of the code (Eclipse and command line integration) will be ported soon.

                • 5. Moving code to git
                  objectiser

                  All repositories are now ported, see the scribble organisation here: https://github.com/organizations/scribble

                   

                  There is also the beginings of an article describing a development workflow - currently documented against the Savara project, but the same applies for Scribble. There are still some outstanding questions to be answered, so may change over time, but when stable will be linked/copied for the Scribble project: http://community.jboss.org/wiki/SavaraDevelopmentWorkflowwithGIT