Я в настоящее время работаю над проектом, который имеет компоненты в жемчуге.NET, C/C++ и Java. Эти компоненты взаимосвязаны, но не связываются с тем же планом выпуска. Из-за совсем других требований сборки/тестовой среды, смешивая их всех в к тому же / мусорному ведру/src / lib / и т.д. / тестовая иерархия является немного громоздким.
Что некоторые хорошие организационные иерархии должны использовать в управлении исходным кодом при контакте с проектом этой природы? Я в настоящее время склоняюсь к каждому языку, имеющему его собственное ответвление:
repo/project1/perl/main/...
repo/project1/.NET/main/...
repo/project1/Java/main/...
Как Ваша рекомендуемая иерархия изменилась бы, если у них DID есть связанный план выпуска?
Я думаю, что вы устали, на линии. Если вы выпустите проект в целом со всеми компонентами, в отличие от того, что он отделительно выпустить каждый компонент, то, я мог бы использовать SVN: внешние для разных местоположений репо или совершенно разных репозиториев, а затем просто ассоциируйте сборку через внешнюю с помощью последней совместимы с меченым отпуском компонента. Отказ Или при использовании Git тогда используйте подмодулы, чтобы сделать много то же самое.
/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/
Точная структура будет зависеть от рабочего процесса и именно то, как компоненты интегрированы, но вы получаете идею.