Child pages
  • Move from Subversion to Git
Skip to end of metadata
Go to start of metadata

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

see discussion on dev@ and SLING-3987

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...)
  • ...

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
  • ...

Git at Apache

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

Repository Layout and Projects (Modules)

There are currently over 280 projects (modules) in our repository and only few are reactor/builder (sling, *reactor*builder) projects:

  • adapter-annotations
  • apache-sling-jar-resource-bundle
  • inplace-integration-test
  • installing-dependencies-sample
  • maven-jcrocm-plugin
  • maven-jspc-plugin
  • maven-launchpad-plugin
  • maven-sling-plugin
  • org.apache.sling.adapter
  • org.apache.sling.api
  • org.apache.sling.atom.taglib
  • org.apache.sling.auth.core
  • org.apache.sling.auth.form
  • org.apache.sling.auth.openid
  • org.apache.sling.auth.selector
  • org.apache.sling.auth.xing.api
  • org.apache.sling.auth.xing.login
  • org.apache.sling.auth.xing.oauth
  • org.apache.sling.bgservlets
  • org.apache.sling.bundleresource.impl
  • org.apache.sling.cassandra
  • org.apache.sling.commons.cache
  • org.apache.sling.commons.cache.api
  • org.apache.sling.commons.cache.container-test
  • org.apache.sling.commons.cache.ehcache
  • org.apache.sling.commons.cache.impl
  • org.apache.sling.commons.cache.infinispan
  • org.apache.sling.commons.cache.portal
  • org.apache.sling.commons.classloader
  • org.apache.sling.commons.compiler
  • org.apache.sling.commons.fsclassloader
  • org.apache.sling.commons.html
  • org.apache.sling.commons.js.nodetypes
  • org.apache.sling.commons.json
  • org.apache.sling.commons.log
  • org.apache.sling.commons.logservice
  • org.apache.sling.commons.mime
  • org.apache.sling.commons.osgi
  • org.apache.sling.commons.scheduler
  • org.apache.sling.commons.testing
  • org.apache.sling.commons.threaddump
  • org.apache.sling.commons.threads
  • org.apache.sling.crankstart.api
  • org.apache.sling.crankstart.api.fragment
  • org.apache.sling.crankstart.core
  • org.apache.sling.crankstart.launcher
  • org.apache.sling.crankstart.reactor
  • org.apache.sling.crankstart.sling.extensions
  • org.apache.sling.crankstart.test.services
  • org.apache.sling.datasource
  • org.apache.sling.discovery.api
  • org.apache.sling.discovery.impl
  • org.apache.sling.discovery.standalone
  • org.apache.sling.discovery.support
  • org.apache.sling.distribution.api
  • org.apache.sling.distribution.core
  • org.apache.sling.distribution.it
  • org.apache.sling.distribution.sample
  • org.apache.sling.engine
  • org.apache.sling.event
  • org.apache.sling.event.dea
  • org.apache.sling.extensions.apt.parser
  • org.apache.sling.extensions.apt.servlet
  • org.apache.sling.extensions.classloader-leak-detector
  • org.apache.sling.extensions.dojo
  • org.apache.sling.extensions.dojo.sling
  • org.apache.sling.extensions.explorer
  • org.apache.sling.extensions.gwt.explorer
  • org.apache.sling.extensions.gwt.sample
  • org.apache.sling.extensions.gwt.servlet
  • org.apache.sling.extensions.logback-groovy-fragment
  • org.apache.sling.extensions.slf4j.mdc
  • org.apache.sling.extensions.webconsolebranding
  • org.apache.sling.extensions.webconsolesecurityprovider
  • org.apache.sling.featureflags
  • org.apache.sling.fragment.activation
  • org.apache.sling.fragment.transaction
  • org.apache.sling.fragment.ws
  • org.apache.sling.fragment.xml
  • org.apache.sling.fsresource
  • org.apache.sling.ftpserver
  • org.apache.sling.hc.annotations
  • org.apache.sling.hc.core
  • org.apache.sling.hc.it
  • org.apache.sling.hc.junit.bridge
  • org.apache.sling.hc.reactor
  • org.apache.sling.hc.samples
  • org.apache.sling.hc.support
  • org.apache.sling.hc.webconsole
  • org.apache.sling.i18n
  • org.apache.sling.ide.api
  • org.apache.sling.ide.api-test
  • org.apache.sling.ide.artifacts
  • org.apache.sling.ide.eclipse-core
  • org.apache.sling.ide.eclipse-m2e-test
  • org.apache.sling.ide.eclipse-m2e-ui
  • org.apache.sling.ide.eclipse-test
  • org.apache.sling.ide.eclipse-ui
  • org.apache.sling.ide.feature
  • org.apache.sling.ide.impl-resource
  • org.apache.sling.ide.impl-resource-test
  • org.apache.sling.ide.impl-vlt
  • org.apache.sling.ide.impl-vlt-test
  • org.apache.sling.ide.m2e-feature
  • org.apache.sling.ide.p2update
  • org.apache.sling.ide.source-bundle
  • org.apache.sling.ide.vlt-wrapper
  • org.apache.sling.installer.console
  • org.apache.sling.installer.core
  • org.apache.sling.installer.factory.configuration
  • org.apache.sling.installer.factory.deploymentpackage
  • org.apache.sling.installer.factory.subsystems
  • org.apache.sling.installer.it
  • org.apache.sling.installer.provider.file
  • org.apache.sling.installer.provider.jcr
  • org.apache.sling.javax.activation
  • org.apache.sling.jcr.api
  • org.apache.sling.jcr.base
  • org.apache.sling.jcr.classloader
  • org.apache.sling.jcr.compiler
  • org.apache.sling.jcr.contentloader
  • org.apache.sling.jcr.davex
  • org.apache.sling.jcr.jackrabbit.accessmanager
  • org.apache.sling.jcr.jackrabbit.base
  • org.apache.sling.jcr.jackrabbit.client
  • org.apache.sling.jcr.jackrabbit.server
  • org.apache.sling.jcr.jackrabbit.usermanager
  • org.apache.sling.jcr.jcr-wrapper
  • org.apache.sling.jcr.oak.server
  • org.apache.sling.jcr.ocm
  • org.apache.sling.jcr.prefs
  • org.apache.sling.jcr.registration
  • org.apache.sling.jcr.repository.it-jackrabbit-oak
  • org.apache.sling.jcr.repository.it-resource-versioning
  • org.apache.sling.jcr.resource
  • org.apache.sling.jcr.resourcesecurity
  • org.apache.sling.jcr.webconsole
  • org.apache.sling.jcr.webdav
  • org.apache.sling.jcr.workspacepicker
  • org.apache.sling.jmx.jolokia
  • org.apache.sling.jmx.provider
  • org.apache.sling.junit.core
  • org.apache.sling.junit.healthcheck
  • org.apache.sling.junit.performance
  • org.apache.sling.junit.remote
  • org.apache.sling.junit.scriptable
  • org.apache.sling.launchpad
  • org.apache.sling.launchpad.api
  • org.apache.sling.launchpad.base
  • org.apache.sling.launchpad.content
  • org.apache.sling.launchpad.contrib-testing
  • org.apache.sling.launchpad.installer
  • org.apache.sling.launchpad.integration-tests
  • org.apache.sling.launchpad.karaf
  • org.apache.sling.launchpad.karaf-features
  • org.apache.sling.launchpad.karaf-integration-tests
  • org.apache.sling.launchpad.karaf-launchpad-integration-tests
  • org.apache.sling.launchpad.test-bundles
  • org.apache.sling.launchpad.test-fragment
  • org.apache.sling.launchpad.test-services
  • org.apache.sling.launchpad.test-services-war
  • org.apache.sling.launchpad.testing
  • org.apache.sling.launchpad.testing-war
  • org.apache.sling.mailarchive.james.wrapper
  • org.apache.sling.mailarchive.reactor
  • org.apache.sling.mailarchive.server
  • org.apache.sling.mailarchive.stats
  • org.apache.sling.mailarchive.ui
  • org.apache.sling.models.api
  • org.apache.sling.models.impl
  • org.apache.sling.models.integration-tests
  • org.apache.sling.mongodb
  • org.apache.sling.oak-s3
  • org.apache.sling.osgi.obr
  • org.apache.sling.paxexam.util
  • org.apache.sling.performance.base
  • org.apache.sling.performance.jcr.resource-2.0.10
  • org.apache.sling.performance.jcr.resource-2.1.0
  • org.apache.sling.performance.jcr.resource-2.2.0
  • org.apache.sling.performance.jcr.resource-2.2.10
  • org.apache.sling.performance.reactor
  • org.apache.sling.performance.tests
  • org.apache.sling.provisioning.model
  • org.apache.sling.query
  • org.apache.sling.reqanalyzer
  • org.apache.sling.resource-editor
  • org.apache.sling.resource.inventory
  • org.apache.sling.resourceaccesssecurity
  • org.apache.sling.resourceaccesssecurity.it
  • org.apache.sling.resourcecollection
  • org.apache.sling.resourcemerger
  • org.apache.sling.resourceresolver
  • org.apache.sling.rewriter
  • org.apache.sling.sample.slingshot
  • org.apache.sling.samples.accessmanager.ui
  • org.apache.sling.samples.custom-login-form
  • org.apache.sling.samples.custom-selector-login-form
  • org.apache.sling.samples.espblog
  • org.apache.sling.samples.fling
  • org.apache.sling.samples.frameworkfragment
  • org.apache.sling.samples.javashell
  • org.apache.sling.samples.jcr.contentloader
  • org.apache.sling.samples.path-based.rtp
  • org.apache.sling.samples.post-servlet-extensions
  • org.apache.sling.samples.slingbucks
  • org.apache.sling.samples.urlfilter
  • org.apache.sling.samples.usermanager.ui
  • org.apache.sling.samples.webloader.service
  • org.apache.sling.samples.webloader.ui
  • org.apache.sling.scripting.api
  • org.apache.sling.scripting.console
  • org.apache.sling.scripting.core
  • org.apache.sling.scripting.freemarker
  • org.apache.sling.scripting.groovy
  • org.apache.sling.scripting.java
  • org.apache.sling.scripting.javascript
  • org.apache.sling.scripting.jsp
  • org.apache.sling.scripting.jsp.jstl
  • org.apache.sling.scripting.jsp.taglib
  • org.apache.sling.scripting.jst
  • org.apache.sling.scripting.python
  • org.apache.sling.scripting.ruby
  • org.apache.sling.scripting.scala.config
  • org.apache.sling.scripting.scala.forum
  • org.apache.sling.scripting.scala.hello-world
  • org.apache.sling.scripting.scala.script
  • org.apache.sling.scripting.sightly
  • org.apache.sling.scripting.sightly.js.provider
  • org.apache.sling.scripting.sightly.reactor
  • org.apache.sling.scripting.sightly.repl
  • org.apache.sling.scripting.sightly.testing
  • org.apache.sling.scripting.sightly.testing-content
  • org.apache.sling.scripting.thymeleaf
  • org.apache.sling.scripting.velocity
  • org.apache.sling.scripting.xproc
  • org.apache.sling.security
  • org.apache.sling.serviceusermapper
  • org.apache.sling.servlets.compat
  • org.apache.sling.servlets.get
  • org.apache.sling.servlets.post
  • org.apache.sling.servlets.resolver
  • org.apache.sling.settings
  • org.apache.sling.slingstart
  • org.apache.sling.startupfilter
  • org.apache.sling.startupfilter.disabler
  • org.apache.sling.superimposing
  • org.apache.sling.tenant
  • org.apache.sling.testing.jcr-mock
  • org.apache.sling.testing.osgi-mock
  • org.apache.sling.testing.reactor
  • org.apache.sling.testing.resourceresolver-mock
  • org.apache.sling.testing.samples.failingtests
  • org.apache.sling.testing.samples.integrationtests
  • org.apache.sling.testing.samples.sampletests
  • org.apache.sling.testing.sling-mock
  • org.apache.sling.testing.sling-mock-jackrabbit
  • org.apache.sling.testing.tools
  • org.apache.sling.tooling.support.install
  • org.apache.sling.urlrewriter
  • org.apache.sling.validation.api
  • org.apache.sling.validation.core
  • org.apache.sling.validation.examples
  • org.apache.sling.validation.it-http
  • org.apache.sling.validation.reactor
  • org.apache.sling.validation.test-services
  • org.apache.sling.xss
  • reactor
  • sample-war
  • sling
  • sling-archetype-parent
  • sling-builder
  • sling-bundle-archetype
  • sling-contrib-builder
  • sling-initial-content-archetype
  • sling-jcrinstall-bundle-archetype
  • sling-lauchpad
  • sling-launchpad-karaf-builder
  • sling-launchpad-standalone-archetype
  • sling-launchpad-webapp-archetype
  • sling-samples-builder
  • sling-servlet-archetype
  • sling-taglib-archetype
  • slingstart-maven-plugin

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