I am currently working on a project that has components in perl, .NET, C/C++, and Java. These components are inter-related, but are not tied to the same release schedule. Due to the very different build/testing environment requirements, lumping them all in to the same /bin /src /lib /etc /tests hierarchy is a bit unwieldy.
What are some good organizational hierarchies to use in source control when dealing with a project of this nature? I am currently leaning towards each language having its own branch:
repo/project1/perl/main/...
repo/project1/.NET/main/...
repo/project1/Java/main/...
How would your recommended hierarchy change if they DID have a tied release schedule?
A multilingual project is a Lingo project that includes more than one target language. Lingo lets you add as many languages as you like to your projects, and you can add or remove them at any time. A great benefit to multilingual projects is that you can add all the languages you need to translate to a single project.
The common way of handling multiple language content is to use Gettext – a software solution created to handle translations in applications written in different programming languages. It is also available in PHP as a separate extension. Using Gettext allows you to separate the app translations from the source code.
There are 2 ways to create apps in multiple languages. Build multiple apps and give the user the ability to select their preferred language when they load the app or add code to automatically select the language based on the device language settings.
There are various ways that multiple languages can be used in one project. Some examples: You can write a DLL in, say, C, and then use that library from, say, a VB program. You could write a server program in, say C++, and have lots of different language implementations of the client.
I think what youve laid out is on the line. If you release the project as a whole with all components as opposed to releasing each component seperately then i might use svn:externals to differnt repo locations or entirely different repositories, then just associate the build via external with the latest compatible tagged release of a component. Or if using git then use submodules to do much the same thing.
/repo/project1
trunk/
svn:external .Net /repo/project1/components/.Net
svn:external perl /repo/project1/components/perl
svn:external Java /repo/project1/components/Java
-- other integration code or what have you --
tags/
branches/
components/
.Net/
trunk/
tags/
branches/
Java/
trunk/
tags/
branches/
perl/
trunk/
tags/
branches/
The exact structure would depend on the workflow and exactly how the components are integrated but you get the idea.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With