Hi together,

sorry for the long mail, but it's a bit complicated ...

The archiva webcontent repo (site-content) is the last one that still resides 
on SVN. 
I would like to move this one to git using the gitpubsub mechanism for 
deployment to the HTTP server.

There is a ticket at INFRA open already 
https://issues.apache.org/jira/browse/INFRA-16387 to get more information about
the migration process.

This repo is still not migrated to git, because:
- The size is really a concern, because the old ref docs of previous versions 
are stored there
- there are some specialities in the site generation process that are bound to 
the svnpubsub and svn to avoid checking out
  the whole repo
- The archiva-modules and archiva-docs site content is stored in a subdirectory 
which is working fine with SVN but not so easy
  with git
- redback site publish is using the same repository

So for the migration, we have to make sure that:
1.) the content of the git repo is the same as of the SVN repo
2.) we are still able to publish site changes from our source tree to the 
public archiva site:
        - archiva-site -> The main site pages
        - archiva/archiva-docs -> The user and admin documentation
        - archiva/archiva-modules/... -> the reports and module specific 
documentation
        - redback -> The redback documentation
3.) the publish process does not need to checkout the whole content repository 
to publish one of the documentations above

I think I have a proof of concept for these tasks (not for redback now, but it 
will be the similar). You can check it out from the
Branch feature/site-git-migration

for 1.) There is a migrated repo 
https://gitbox.apache.org/repos/asf/archiva-web-content.git with the current 
status of the SVN repository
for 2.) 
        I'm still using the maven-scm-publish-plugin  which is capable of using 
git repositories
        The part with subdirectories and submodules is a bit tricky, because 
you cannot specifiy a subdirectory of a git repository in the publish url.
        I change the path for the staging directory used by the site plugin 
(e.g. to target/staging/docs/${project.version}) and reference the staging
        root directory in the scm-publish plugin. 
        For submodules we need a path to the archiva-modules project as staging 
dir, therefore the new property entries in the submodules (if somebody knows a 
        better solution, please tell me)
for 3.) I'm using git sparse checkouts which allows to checkout only subtrees 
of a repository. The git repository index is still needed for each site 
checkout, but
        its about 86MB and that is still manageable.
        There is a shell script in the archiva-docs and archiva-modules folder 
that runs the clone and sparse checkout and which is executed by a exec plugin.
        It is linux/bash only, if we need windows as well, I may work on some 
platform independent way.


I did not checkin a valid publish url for the archiva-web-content.git 
repository, to avoid littering it with too much testing commits, but you can 
test it with a 
local git clone (must be a bare clone):
git clone --bare https://gitbox.apache.org/repos/asf/archiva-web-content.git 
${HOME}/git/archiva-web-content.git

With this local clone you can test the publish process:

archiva-site: 
==========
- Checkout the branch feature/site-git-migration
- Run
mvn -DsiteRepositoryUrl=scm:git:file:///${HOME}/git/archiva-web-content.git 
clean site
# if you want to look at the staging area in target/staging
mvn -DsiteRepositoryUrl=scm:git:file:///${HOME}/git/archiva-web-content.git 
site:stage
# Deploy:
mvn -DsiteRepositoryUrl=scm:git:file:///${HOME}/git/archiva-web-content.git 
site-deploy
# You can verify the changes in your archiva-web-content.git clone

archiva-docs: 
==========
- Checkout the branch feature/site-git-migration of archiva repo
- cd archiva-docs
- Run
mvn -DsiteRepositoryUrl=scm:git:file:///${HOME}/git/archiva-web-content.git 
clean site
# if you want to look at the staging area in target/staging
mvn -DsiteRepositoryUrl=scm:git:file:///${HOME}/git/archiva-web-content.git 
site:stage
# Deploy:
mvn -DsiteRepositoryUrl=scm:git:file:///${HOME}/git/archiva-web-content.git 
site-deploy
# You can verify the changes in your archiva-web-content.git clone


archiva-modules:
============= 
I reduced the generated reports to speedup the build process. 
- Checkout the branch feature/site-git-migration of archiva repo
- Run
cd archiva-modules
./deploySite.sh 
-DsiteRepositoryUrl=scm:git:file:///${HOME}/git/archiva-web-content.git 
site-deploy
# You can verify the changes in your archiva-web-content.git clone

So please try it out and tell me what you think about it, or if you have any 
concerns or know something I have not considered yet.

We need a vote on this mailing list for the final migration, so would be 
helpful to get some feedback before starting the voting process.


Greetings

Martin













Reply via email to