Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [winery-dev] Initial checkin: structuring the git repositories

My general bias is to minimize the number of Git repositories as much as possible. I find it is more work for both committers and consumers when you split the code into lots of repositories. It makes it harder to find things, and more work to keep them synchronized. If it is not too big, even a single git repository for the whole project might be ok. The exception would be if you have lots of large files and/or binary content that makes the repository very large. A very large repository takes a long time to clone which is also a barrier for committers and consumers. A single repository up to 200-300 MB works pretty well, but if you have 2-3GB it is too large.

I don't know the content of your code very well so it is hard for me to give a more specific recommendation. I definitely wouldn't recommend more than the 5 you listed here, and if you could go with even less it might be better in the long term.


From:        Oliver Kopp <>
To:        Winery developer discussions <winery-dev@xxxxxxxxxxx>,
Date:        12/01/2013 09:38 AM
Subject:        [winery-dev] Initial checkin: structuring the git repositories
Sent by:        winery-dev-bounces@xxxxxxxxxxx

Dear mentors,

I got an email from the Eclipse Webmaster stating "You are encouraged
to create one repository per component or module in your project
(where a component can be a plugin or a sub-project)."

Currently, we're developing everything in one git repository as we
feel maintaining several repositories adds a burden when the
components are strongly connected.

I'm thinking of separating the projects as follows:

Each of following project as separate repository:

* org.eclipse.winery.highlevelrestapi: support library, versioned
separately from Winery
* org.eclipse.winery.model.csar.toscametafile: model for TOCSA
metafiles, versioned separately from Winery
* org.eclipse.winery.model.selfservice: model for the self service
portal, versioned separately from Winery
* org.eclipse.winery.model.tosca: model for TOCSA, versioned
separately from Winery

"versioned" means here the version of the maven project

And then all remaining projects as one big part:

* org.eclipse.winery.common: Used in repository and topology modeler
* org.eclipse.winery.generators.ia: IA Generator, used as component in
the repository
* org.eclipse.winery.repository: the repository including a JSP-based UI
* org.eclipse.winery.repository.client: Java-client for the repository
* org.eclipse.winery.topologymodeler: Graph-based modeler for topology templates

On the one hand, they could all perfectly reside in different gits and
could be even versioned independently from each other. On the other
hand, they are closely connected: The topology modeler depends on the
client and on the repository. Both the modeler and the repository
depend on common. The repository depends on the generator.

I'm not just separating the projects as I'm afraid the building guide
for Winery will be as huge as the one for Stardust
without Winery being as huge as Stardust...



winery-dev mailing list

Back to the top