Separa las sucursales de Subversion por lenguaje de progtwigción?

En algunos proyectos, tengo que lidiar con más de un lenguaje de progtwigción (por ejemplo, una aplicación GUI de Delphi que se comunica con una aplicación C # o Java). El repository de Subversion actualmente contiene tres twigs principales, una por idioma.

¿Debo cambiar esto y agrupar todas las partes del proyecto en el tronco como en el siguiente ejemplo para facilitar la ramificación y el labeldo en el nivel del proyecto?

project1 branches ... tags ... trunk csharp_app delphi_app java_app ... project2 ... 

A medida que estos sub proyectos independientes interactúan, necesitan moverse en bloque , y usted necesita labelr / ramificar / liberar los componentes C # / Java / lo que sea. Si no están relacionados, yo recomendaría (tal vez) repositorys separados, o directorys separados dentro del mismo repository. Pero no twigs o tags.

Las twigs se usan para administrar diferentes flujos de desarrollo en la misma base de código. Las tags se usan para indicar un punto particular en la evolución del proyecto.

Creo que el lenguaje de progtwigción es irrelevante. Pregúntate qué es lo que puedes soltar y cómo debes gestionarlo. He hecho esto con éxito en el pasado con proyectos que incorporan Java y C ++, y el idioma no es el problema: es mantener sincronizados los componentes que necesita administrar.

No necesariamente crearía un nuevo directory de nivel superior por idioma. ¿Qué sucede si su componente Java de repente necesita una capa JNI? Me sorprende que la implementación se refleje en la estructura de directorys de nivel superior, y eso realmente no debería ser una preocupación.

El lenguaje de progtwigción es irrelevante cuando se administra un solo proyecto. Un solo module se puede escribir en una variedad de lenguajes de progtwigción, pero aún así estar demasiado unido para que valga la pena separarlo. Si cada module de la aplicación (tanto si está escrito en el mismo idioma o no) es lo suficientemente independiente como para ser considerado un proyecto separado (y, en consecuencia, convertirse en versiones independientes), es posible que desee separarlo. De lo contrario, no hagas eso.

No creo que sea una buena idea, porque teóricamente los diferentes componentes podrían romper la compatibilidad, y si no permanecen sincronizados sería difícil volver a la última configuration de trabajo.

Sí. El criterio es si las aplicaciones requieren alguna forma de synchronization de sus características entre sí, y ese protocolo de comunicación (API, código compartido, bibliotecas compartidas) puede cambiar con el time. Si las aplicaciones no tienen nada que ver entre sí, entonces separe los repositorys. Tener aplicaciones escritas en múltiples idiomas en el repository es irrelevante.