для "помещения всех проектов в один ствол":
По моему опыту, это не очень хорошая идея, потому что каждый проект имеет свою историю и изменения, и часто проекты поддерживаются / будут поддерживаться разными разработчиками. Это может привести к конфликтам - даже если вы заявите, что в настоящее время проекты сильно мешают.
Так почему бы вам не использовать общие теги (с вехами в качестве имен для) для всех ваших проектов, чтобы обеспечить одинаковую базу кода и сценарий сборки, который может автоматически проверять проекты (транки)? Это больше работы, но, как обычно в ООП (капсуляция), я бы предпочел разделить проекты на отдельные каталоги SVN.
Но: собрать кучу маленьких библиотек и приложений в общий каталог в одной и той же соединительной линии нет проблем (см. «Приложения» и «инструменты» в моем примере ниже) - так что, возможно, «маленькие проекты» могут остаться в общем / большой багажник.
Вот в качестве примера моя структура каталогов SVN:
/projects/
/projects/CustomerA/
/projects/CustomerA/ProjectX/
/projects/CustomerA/ProjectX/trunk/
/projects/CustomerA/ProjectX/tags/
/projects/CustomerA/ProjectX/branches/
/thirdparty/
/thirdparty/ExtLibY/
/thirdparty/ExtLibZ/
/tools/
/tools/trunk/
/tools/tags/
/tools/branches/
/apps/
/apps/trunk/
/apps/tags/
/apps/branches/
Таким образом, все внешние компоненты хранятся в / thirdparty /, а все внутренние компоненты (проекты, инструменты, приложения) имеют подкаталоги:
/trunk/
/tags/
/branches/
... как советовали в книге Subversion и в предыдущем посте.
Даже если на первый взгляд это требует немного больших усилий - это действительно того стоит, особенно когда ваша кодовая база растет.
чао,
Chris