Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Virgo/Source
Contents
Virgo Components
The Virgo source code is organised into separate components which form a directed acyclic dependency graph. This is a layered architecture in which lower layers may provide function to higher layers but not vice versa.
It is important to understand the layering when making changes: changes to lower layers have a greater potential impact than changes to the higher layers.
To do: add a picture of the basic layering.
Virgo git Repositories
Each Virgo component resides in its own git repository. The Build tab details how to clone and build these components, but if you want a quick peek at the source code, follow the Short Name links in the table.
Short Name | Description | Anonymous: git clone | Committer: git clone |
web-server | Web server packaging build | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.web-server.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.web-server.git |
documentation | End-user documentation | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.documentation.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.documentation.git |
apps | Virgo-supplied applications | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.apps.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.apps.git |
web | Web integration layer | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.web.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.web.git |
kernel | Core runtime | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.kernel.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.kernel.git |
artifact-repository | Artifact repository | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.artifact-repository.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.artifact-repository.git |
medic | Diagnostics | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.medic.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.medic.git |
test | Test framework | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.test.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.test.git |
util | utilities | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.util.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.util.git |
osgi-extensions | Launcher and Equinox hooks | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.osgi-extensions.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.osgi-extensions.git |
osgi-test-stubs | Unit test stubs for common OSGi interfaces | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.osgi-test-stubs.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.osgi-test-stubs.git |
virgo-build | Ant/Ivy based build system | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.virgo-build.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.virgo-build.git |
performance-test | Performance tests | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.performance-test.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.performance-test.git |
system-verification-tests | SVT tests | ||
kernel-system-verification-tests | Kernel SVT tests | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.kernel-system-verification-tests.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.kernel-system-verification-tests.git |
kernel-tools | Tools integration layer | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.kernel-tools.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.kernel-tools.git |
sample-greenpages | Greenpages sample | ||
sample-configuration-properties | Configuration properties sample | ||
sample-formtags | Formtags sample | ||
sample-osgi-examples | OSGi samples | git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.sample-osgi-examples.git | ssh://committer_id@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.sample-osgi-examples.git |
Virgo's sister project, Gemini Web, resides in the following git repository.
Short Name | Description | Anonymous: git clone | Committer: git clone |
gemini-web-container | Gemini web container | git://git.eclipse.org/gitroot/gemini.web/org.eclipse.gemini.web.gemini-web-container.git | ssh://committer_id@git.eclipse.org/gitroot/gemini.web/org.eclipse.gemini.web.gemini-web-container.git |
Source Organisation
A typical git repository is organised into the following files and directories:
build-xxx/ // top-level build directory build.properties // properties substituted during build build.versions // dependency version properties org.eclipse.virgo.xxx.y.z/ // a project ... // more projects virgo-build/ // git submodule
Each project is organised into the following files and directories:
.classpath // Eclipse build class path .project // Eclipse project metadata .settings/ // Settings .springBeans // Spring tooling metadata build.xml // Ant build instructions ivy.xml // Ivy build dependencies src/main/java/ // Runtime source src/main/resources/ // Runtime resources src/test/java/ // Unit/integration test source src/test/resources/ // Unit/integration test resources template.mf // Bundlor template
How to Add a git Repository to Virgo
While this information is mainly of use while the Virgo repositories are initially being populated, it may be useful later. It says how to trace back from Virgo to its origins, how to update a repository description, and what files to copy when a new repository is added.
1. Add the new repository to the git server (may require project lead privileges):
>ssh <committer_id>@git.eclipse.org >cd /gitroot/virgo >initrepo org.eclipse.virgo.<reponame>.git <log out e.g. using Ctrl-D>
2. Clone the new repository:
>git clone ssh://<committer_id>@git.eclipse.org/gitroot/virgo/org.eclipse.virgo.<reponame>.git <repo dir>
3. Create the directories of the new repository and any .gitignore file. For example:
>cd <repo dir> >cp <source dir>/.gitignore . >cp -r <source dir>/o* . >cp -r <source dir>/b* .Make sure you get all the files -- some of them may not fall into these patterns.
4. If you are creating the new repository from an existing git repository, tag the existing repository and make a note of the tagged commit SHA.
>cd <source dir> >git tag Virgo-checkin >git push origin master --tags >cd <repo dir>
5. Add a submodule for Virgo build.
>git submodule add git://git.eclipse.org/gitroot/virgo/org.eclipse.virgo.virgo-build.git virgo-build
6. Stage all the above changes and push to master.
>git add . >git commit -m "initial checkin from <existing repository> commit <tagged commit SHA>" >git push origin master
7. Edit .git/description, making sure the file is a single line ending in a newline, and rsynch this (may require project lead privileges).
>rsync .git/description <committer-id>@git.eclipse.org:/gitroot/virgo/org.eclipse.virgo.<reponame>.git/description
8. Add the new repository to the table above.
9. Don't forget to create Hudson build jobs, if you need them, and close any bug which was tracking the creation of the new repository.