Я вообще понимаю, что вы все говорите о том, "как работает SVN". Возможно, проблема не в том, что мне неясно, но я становлюсь жертвой организационной проблемы с более высоким кодом.
Корень проблемы кроется в зависимостях проекта. У меня много приложений, которые имеют много зависимостей. Из-за иерархической структуры проектов .NET ожидается, что зависимости будут находиться в определенных физических местах. Итак, если я собираюсь начать работу над этим проектом:
http://mysvn/svn/foo/bar/project1
этот проект войдет в
C:\source\foo\bar\project1
Теперь этот проект зависит от другого проекта. В файле проекта .NET ссылка на проект имеет относительную «обратную ссылку»:
..\..\..\bar\foo\project2
поэтому ожидается, что зависимость будет находиться в локальной рабочей копии на
C:\source\bar\foo\project2
Таким образом, структура родительского каталога является критической.
Я не могу сохранить зависимый проект как дочерний элемент какого-либо одного конкретного приложения / проекта, потому что они используются многими проектами. Таким образом, они живут в своих местах за пределами одного конкретного дерева проекта. Таким образом, мне нужно убедиться, что любой данный проект (и его зависимости) извлечен в определенном месте дерева относительно корня дерева источника, чтобы гарантировать, что ссылки на проекты не нарушаются или что они не не отличаются между разработчиками. В противном случае каждый из нас постоянно обновляет ссылки, чтобы заставить их работать, создавая много шума в истории источников и постоянных перерывов между разработчиками. Кроме того, тогда на сервере сборки их также не будет в нужном месте.
Мне еще предстоит найти какую-либо полезную информацию о разработке .NET с помощью SVN. В .NET существует множество проектов с открытым исходным кодом, которые используют SVN или CVS. Тем не менее, те, на которые я смотрел, всегда выглядят достаточно изолированно, так что все разные проекты попадают в одно дерево исходных текстов. Это позволяет легко получить все необходимое, поскольку вы можете просто рекурсивно проверить один путь и получить все необходимое.
Мне было бы очень интересно услышать от любого, кто занимается корпоративной разработкой в .NET, используя SVN со многими общими проектами, которые пересекают границы хранилища проектов.
Начинает казаться, что единственное решение, которое будет работать в команде, - это просто проверить весь репозиторий, чтобы убедиться, что структура правильная и согласованная. Это неудачно для репозитория, который имеет много гигов источника.