discussed at the Sling Committer Round Table @ adaptTo() 2016

we discussed again the long-debate topic moving from svn to git. no commiter 
hat and objection that moving to git creates a real problem. all agreed it 
would be nice to move to git.

aspects that where discussed:

- every module should get it's own git project
  - including special cases where a module is only a integration test project
  - this ensures thare is only one "releaseable" artefact per git repository
  - and git branching/tagging works as expected
  - most sling modules are quite independent anyway

- we need a replacement for the reactor poms
  - to build groups of related projects, e.g. sling distribution, sling models, 
testing mocks etc.
  - and to build all sling sources together
  - goal is to have an additional git project for each reactor pom/suitable 
grouping of git projects
  - as multi repo tooling support e.g. google repo [1] or gitslave [2] could be 
used
  - which solution is chosen is not important for the first step and the 
initial migration - we can solve this late, it's mainly for convenience

- this apporach results in a HUGE number of git repos - perhaps 300-350 
including reactor poms
  - because sling is so modular, and has so many bundles already

- in the apache github mirror there is only one organization "apache"
  - all 350 sling projects would be part of this main organization, together 
with all other apache git projects that are already listed there
  - other projects like commons, cordova, couchdb are examples haven already a 
lot of individual git repos
  - asf currently does not allow apache projects to create their own github 
organizsation, mainly due to infra restrictions

- name pattern for the git repository should be something like 
"sling-<artifactId>"
  - we drop the folder grouping from svn today in "extensions", "servlets", 
"commons" etc. only the hierarchy of artifactId is relevant.
  - with the prefix "sling-" they
  - question: how are "contrib" and "samples" repos marked? by another prefix 
like "sling-contrib-" and "sling-samples"?

- no "self-service" for creating git repos
  - a big problem ist hat asf infra currently does not provide a "self-service" 
for creating new asf git projects
  - whenever a new sling module is created a ticket a INFRA is needed to create 
it, process is blocked until the involved manual steps are completed
  - perhaps we can talk to infra providing a better solution here, pointing at 
the 350 git repos we already need only for the start
  - if this is not solved just creating a new project/module is more 
complicated than required

- only one git repo for contrib and samples?
  - we briefly discussed to use only one big repo for contrib and samples as a 
workaround fort the "no self-service" problem, it would then be easy to create 
new modules at least there
  - but this is perhaps not a good solution, because it again creates all 
problems that arise when multiple releasible artifacts are put together in one 
git repo
  - and it would make it harder to move something from contrib to "full 
supported"

- committer whiteboards
  - we also need a solution for the comitter whiteboards
  - they should be cleaned up before migration leaving only what is still 
relevant

- migration process
  - the migration process has to be fully scripted, and tested several time in 
a "lab environment"
  - we should avoid migration approached that need restructuring the svn 
hierarchy before migration (e.g. "flat list of all modules"), because this make 
impact the migration of svn history to the individual git repos
  - we may need to write our own migration script handling the specifics of the 
current svn folder structure and creating the full list of individual git repos 
locally from it (first migrate to a single git repo and then splitting it up 
preserving history for each modules folder). those local created git repos can 
then be pushed to the individual asf git repos.

- contact infra
  - before we take further steps we should ask infra for it's opinion
  - e.g. by creating a jira ticket and describing the planned steps, and that 
this would result in a huge number of repos

stefan

[1] https://code.google.com/p/git-repo/
[2] http://gitslave.sourceforge.net/


Reply via email to