Производительность в Subversion и SourceSafe

Мы - распределенная команда из 5 разработчиков, работающая над довольно крупным интеграционным проектом. В настоящее время мы используем SourceSafe (да, я знаю, что это отстой, но он работал до недавнего времени, а мы использовали его всегда). Нашей самой большой проблемой в последнее время стала производительность. Регистрация и выход проекта занимает вечность, и мы обнаруживаем, что тратим много времени, просто ожидая SourceSafe (да, мы отключили антивирусную проверку и все другие трикси для повышения производительности - это все еще медленно).

Сейчас мы изучаем возможность установки и переноса всего нашего материала в Subversion. Какова производительность SourceSafe через Интернет по сравнению с Subversion? Я полагаю, что историю не так важно перемещать (мы могли бы просто вернуться к базе данных VSS, если нам нужен старый файл) и собственно перемещение файлов в Subversion должно быть проблемой, верно?

Я также хотел бы получить некоторые сведения об инструментах и ​​надстройках, которые «должны быть» помимо собственно основных инструментов Subversion.


person Riri    schedule 27.10.2008    source источник
comment
Возможно, вы захотите немного переименовать свой вопрос, чтобы подчеркнуть производительность :)   -  person Luk    schedule 27.10.2008
comment
+1 Просто работает, но очень медленно: полностью согласен!   -  person Dimitri C.    schedule 08.10.2009


Ответы (8)


Регистрация VSS называется фиксацией в SVN. Эта операция выполняется во много раз быстрее, так как SVN будет передавать только изменения (также известные как «diff»), которые вы внесли в файлы, в то время как VSS отправит весь файл и изменит его на сервере.

check out в SVN (получение начальной рабочей копии) несколько медленнее по сравнению с другими системами, если вы используете http (s) и имеете большой (> 100 МБ) общий размер файлов. В худшем случае SVN - это много файлов и каталогов, так как HTTP-передача будет намного медленнее, чем большие отдельные файлы.

Однако я сомневаюсь, что VSS будет быстрее SVN. Общая производительность SVN выше, надежнее (без повреждений базы данных) и проще для понимания, чем у VSS.

Хорошими инструментами являются TortoiseSVN (подключаемый модуль проводника), smartSVn (аналог VSS) и командная строка (гибкая), как Tigraine добавил в моих комментариях: AnkhSVN (интеграция с Visual Studio) и subversive / subclipse для eclipse IDE.

person Peter Parker    schedule 27.10.2008
comment
Дело не в том, что он различает его на сервере. VSS - это не архитектура клиент / сервер. Клиент VSS просто использует общий доступ к файлам Windows для работы с файлами своей базы данных. - person Ferruccio; 27.10.2008

Вы также можете найти этот вопрос актуален.

Представление

Основное различие в продолжительности отдельных операций в SVN и VSS заключается в принципе SVN: время операции должно быть пропорционально размеру изменения, а не размеру проекта. Лучше всего это видно с помощью Получить последнюю версию (VSS) по сравнению с Обновлением (SVN). VSS «Получить последнюю версию» всегда перебирает все файлы в проекте, проверяя их статус. Это занимает очень много времени. По сравнению с этим SVN проверяет историю проекта и обрабатывает только те файлы, которые были затронуты. В типичном сценарии это огромная победа, поскольку чаще всего затрагиваются только несколько файлов. Даже при касании файла передача изменений в SVN происходит намного быстрее, чем в VSS, поскольку передаются только изменения по сравнению со всем файлом в VSS. То же самое верно и для коммитов (Checkin), где снова SVN намного быстрее при внесении небольших изменений в огромные файлы. Это также применимо к двоичным файлам, поскольку SVN также может выполнять различие с ними (используя XDelta в качестве основного механизма сравнения).

Самые важные инструменты

Для разработчика Visual Studio наиболее важными инструментами являются:

  • TortoiseSVN - доступ к репозиторию через Windows Shell
  • AnkhSVN - интеграция с Visual Studio
  • некоторые также рекомендуют VisualSVN в качестве интеграции с VS, но я думаю, что с AnkhSVN 2 интеграция уже достаточно хорошая

Я даже дошел до того, что сказал, что имея TortoiseSVN и AnkhSVN, вам вообще не нужно устанавливать «Основные инструменты Subversion». Основные инструменты командной строки чрезвычайно полезны, например для автоматизации, но для повседневной работы я никогда не использую их, и установка их не требуется для работы TortoiseSVN или AnkhSVN.

Доступ в Интернет

Доступ через Интернет изначально поддерживается SVN и поддерживается очень хорошо. Для VSS вам понадобятся внешние приложения, и хотя они неплохие, они не работают 1: 1 по сравнению с исходной средой, и их скорость все же несколько не хватает.

Как конвертировать

VSS2SVN - это инструмент, который выполняет преобразование достаточно быстро и достаточно хорошо. Основываясь на нашем опыте, я настоятельно рекомендую не использовать «стабильную» сборку, а использовать вместо нее ежедневный снимок - он может обрабатывать многие элементы в истории, которые приводят к полному сбою предыдущей сборки.

Мы успешно использовали недавнюю ежедневную сборку с огромной базой данных с долгой историей, и результат был очень хорошим.

person Suma    schedule 27.10.2008
comment
@suma: эй, сума, спасибо за внимание к AnkhSVN, я почти купил VisualSVN. Я просто пробую это сейчас, но знаете ли вы, достаточно ли гибки VisualSVN или AnkhSVN, чтобы репозиторий db был просто переносимым, поэтому иногда он будет в Интернете, а иногда, скажем, на моем iPod ... .? ваше здоровье - person andy; 27.04.2009
comment
Что именно ты хочешь делать? Будет ли URL-адрес db всегда одинаковым? Имейте в виду, что с SVN вы можете выполнять некоторые основные операции (включая сравнение с базой) без необходимости связываться с db (и нет проверки, поэтому вы определенно можете начать редактирование даже в автономном режиме). - person Suma; 27.04.2009

С Subversion удаленный доступ намного проще.

Если вы не заботитесь о сохранении своей истории, переход от VSS к Subversion также прост. Вам просто нужно вручную удалить привязки системы управления версиями (файлы * .scc).

Что касается инструментов, вы, вероятно, захотите получить TortoiseSVN и, возможно, подключаемый модуль для использования с Visual Studio (если это то, что вы используете), например Ankh SVN (бесплатно).

person Community    schedule 27.10.2008

Если вы действительно заботитесь о сохранении своей истории, тогда http://www.pumacode.org/projects/vss2svn преобразует один репозиторий в другой.

У меня был очень ограниченный успех, и это одна из причин, по которой мы до сих пор используем безопасный исходный код.

person seanyboy    schedule 27.10.2008

Visual SourceSafe построен на основе обмена файлами. Поэтому, когда вы бронируете в файл, все делается с использованием файловой системы. Таким образом, вместо того, чтобы просто отправлять текст файлов на сервер и все, что происходит удаленно, VSS обращается к физическим блокам с диска при доступе к серверу vss. Включая поиск файла в каталоге общих дисков и т. Д. Это примерно в 10 раз медленнее, чем заказной протокол клиент-сервер.

Существует продукт под названием SourceOffSite, который добавляет более быстрый интерфейс к базе данных VSS, что позволяет использовать VSS по более медленным ссылкам.

Тони

person AnthonyLambert    schedule 27.10.2008

Судя по моему опыту, это будет намного быстрее.

Я не использовал один и тот же большой проект в VSS и SVN, но я делал разные проекты в каждом и перенес небольшой из VSS в SVN.

Некоторые вещи намного быстрее. В частности, при проверке / фиксации большого количества файлов появляется предупреждающее сообщение вроде «это займет много времени и может не сработать? Вы все равно хотите попробовать?» (Это не совсем то, что написано).

Фиксация большого количества изменений на самом деле невозможна в VSS - вам нужно сделать несколько небольших коммитов, оставив проект во временно неработающем состоянии (хотя у него все равно нет атомарных коммитов, так что это все равно произойдет в какой-то момент) .

person MarkR    schedule 27.10.2008

Я согласен с @relentless насчет подрывной деятельности, но предпочитаю использовать командную строку. Чтобы научиться, нужно немного времени, но как только вы научитесь, вы станете быстрее.

Кроме того, если производительность является важной проблемой, вы можете взглянуть на http://git.or.cz/, он считается действительно быстрым и надежным.

person Ricardo Acras    schedule 27.10.2008
comment
Если вы всего лишь группа из 5 разработчиков, переход на Git не должен быть слишком сложным. - person JesperE; 27.10.2008
comment
Да ... Но мы работаем с множеством артефактов BizTalk, и я не уверен, как это будет работать - person Riri; 27.10.2008

TortoiseSVN - действительно очень хороший клиент, и я использую его в сочетании с Trac на сервере, чтобы иметь доступ в Интернет. в репозиторий и красивую вики / тикет-систему.

LiveCD - ссылка.

person bob    schedule 27.10.2008