You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Several Apache projects (e.g. ServiceMix, Karaf, Camel) moved from Subversion to Git. Is it time for Sling to move also?

dev@discussions:

See also SLING-3987 - Getting issue details... STATUS

Tools and scripts

Some WIP tools can be found at https://svn.apache.org/repos/asf/sling/trunk/tooling/scm/scripts/ .

Can Sling (committers and contributors) benefit from moving to Git?

Pros

  • offline support
  • cherry picking
  • easy to move projects (e.g. between bundles, contrib, whiteboard...)
  • adpoting the Github workflow using the Git Dual Master system
  • ...

Cons

  • not eating our own dog food
  • slow for big repositories (many modules)
  • tagging is global
  • ...

What needs to be prepared for moving to Git?

  • repository layout
  • release process
  • documentation
  • CI

Git at Apache

http://wiki.apache.org/general/GitAtApache
http://www.apache.org/dev/git.html

Repository Layout and Projects (Modules)

There are currently 250 projects (modules) in our repository, counted using the tooling/scm/scripts/gen-repo-candidates.sh script ( repo-candidates.txt ).

Currently we consider every Maven project for extraction into its own repository. As exception we have:

  • tooling/ide, which is a releasable unit by itself and not buildable as individual modules due to toolchain limitations
  • tooling/scm, which contains various utility scripts
  • tooling/jenkins, which contains the Groovy scripts used to generate the Jenkins jobs

Additionally, we will probably have one aggregator repo used to generate the full view over the git repositories, using repo, gitslave, or another tool that we will settle on.

Idea

  • one Git repository per project/module (we should keep it that simple - is launchpad really different, a release unit, Justin Edelson?)
  • grouping repositories with Google repo, e.g. core (bundles), launchpad, testing, samples, tooling as needed
  • using artifactId as repository name for artifacts (bundles, plugins, jars, ...) and simple names for grouping (builder/reactor) repositories
  • using Google repo allows developers to set up their own grouping repositories - even non Sling committers

Grouping repositories (projects/modules)

There are some tools for grouping repositories (projects/modules):

Some posts comparing different tools:

Pros and Cons

[TODO]

 

  • No labels