Редактировать : Прочитав другие ответы здесь, я решил упомянуть одну вещь. Если вы попробуете один сервер, репозитории, которые вы просите его обслуживать, не будут отличаться от репозиториев, которые вы просите обслуживать другой тип сервера.
Другими словами, если вы решите попробовать один сервер сейчас, выможет переключиться на другой тип сервера позже, не теряя свои репозитории. Конечно, рабочие копии и любые абсолютные внешние ссылки, которые вы делали в своих проектах, должны будут измениться, но вы можете сохранить свои репозитории с историей и всем.
Я установил VisualSVNСервер , когда он был анонсирован и какое-то время был им доволен.
Однако проблемы со скоростью заставили меня переключиться на основной сервер svnserve, который поставляется как часть пакета командной строки Subversion.
Основная проблема заключается в том, что я работаю с .NET, и я решил добавить несколько внешних ссылок Subversion в мои проекты.
Прежде всего, каждый проект, который я делаю в своем классебиблиотека подписана моим ключом. Во-вторых, внешние сторонние библиотеки, такие как SQLite и NUnit , были добавлены в качестве внешних ссылок.
Каждый проект имел свои внешние ссылки. Я сделал это для того, чтобы иметь возможность создать новый проект приложения, а затем сделать новые внешние ссылки на части моей библиотеки классов, которые мне нужны, и чтобы эти ссылки были полными. Если бы в моем решении библиотеки классов в .NET была одна внешняя ссылка для файла ключа подписи, и этот файл не был доступен как часть какого-либо отдельного проекта, но находился на диске вне всех проектов, но был локальным для моего решения, это было быне сработало.
Итак, мое решение для библиотеки классов содержит около 15-20 проектов, каждый из которых имеет хотя бы одну внешнюю ссылку на ключ подписи, все мои проекты данных имеют внешние ссылки на библиотеку SQLite и модульбиблиотека тестов с 4-5 внешними ссылками.
В итоге получилось, что одно обновление на уровне решения, даже если у меня уже были все последние файлы, каталоги и все остальное, заняло около 2 минут. Каждые внешние ссылки выполнялись где-то между 10 и 20 секундами, просто чтобы убедиться, что у меня была нужная ревизия.
Когда я переключился на svnserve, эти 2 минуты были сокращены примерно до 3 секунд. Имейте в виду, это местный трафик, поэтому, конечно, он будет отличаться в Интернете. Проблема в том, что эти 2 минуты были также локальным трафиком.
Так что, хотя мне очень понравился интерфейс, предоставленный мне VisualSVN Server, включая возможность легко настраивать права доступа и пользователей,скорость, которую мне предоставил серверный модуль Apache, была абсолютно ужасна по сравнению с тем, что делает svnserve и собственный протокол Subversion.
Обратите внимание, что с тех пор я установил отдельный сервер Apache, пробежав по множеству файлов конфигурации,и настроить Subversion с Apache, отличным от сервера VisualSVN, просто для того, чтобы убедиться, что это не просто VisualSVN, и я подтвердил, что наблюдаемая мной скорость не была работой команды VisualSVN. Похоже, что протокол HTTP или модули Apache работают не так быстро.
Мой совет, если это возможно, использовать основной сервер svnserve. Чтобы узнать конфигурационные файлы для авторизации и тому подобное, может потребоваться некоторая работа, но один фактор раздражения (т.е. никакого раздражения по скорости вообще) скорее всего перевесит это.