Подтвердить что ты не робот

Как я могу ускорить обновление SVN?

У нас есть довольно большой репозиторий SVN. Выполнение SVN-обновлений длится дольше и дольше, чем больше мы добавляем код. Мы добавили svn:externals в папки, которые были повторены в некоторых проектах, таких как FCKeditor на разных сайтах. Это помогло, но не так.

Каков наилучший способ сократить время обновления и повысить скорость SVN?

4b9b3361

Ответ 1

Если это более старый SVN-репозиторий (или даже совершенно новый, но не был настроен оптимально), возможно, он использует более старый стиль базы данных репозитория BDB. http://svn.apache.org/repos/asf/subversion/trunk/notes/fsfs содержит примечания к новой. Для перехода от одного к другому isn; t слишком сложно - сбрасывать всю историю, повторно инициализировать ее с новым svn файлом файловой системы и повторно импортировать. Также может быть полезно одновременно фильтровать репо-дамп для удаления целых проверок бесполезной информации (я, например, удалил файлы размером 20 МБ + tarball, которые кто-то зарегистрировал).

Что касается общей скорости - качественный (быстрый) жесткий диск и дополнительная память для кэширования на базе ОС будет трудно устранить с точки зрения увеличения скорости работы SVN.

На стороне клиента, если у вас есть установка tortoisesvn через PuttyAgent для доступа SSH к машине внешнего репозитория, вы также можете включить сжатие SSH, что также может помочь.

Изменить: В SVN v1.5 также есть инструмент fsfs-reshard.py, который может помочь разделить FSFS основанный на svn-репозитории в ряд каталогов, которые сами могут быть связаны с различными ведущими шпинделями. Если у вас тысячи изменений, это также может помочь - если не по какой-либо другой причине, чем найти один файл среди тысяч, требуется время (и вы скажете, если это проблема, посмотрев время IOwait)

Ответ 2

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

Ответ 3

На самом деле это не ответ, но может быть интересно узнать, что одна из причин svn такова, что I/O-heavy - это тот факт, что он хранит одну дополнительную копию каждого файла в каталоге .svn/text-base. Это делает локальные операции diff быстрыми, но ест много пространства жесткого диска и ввода/вывода.

http://subversion.tigris.org/issues/show_bug.cgi?id=525 содержит сведения.

Ответ 4

Похоже, у вас есть несколько проектов в одном хранилище. Разделение их по мере необходимости даст вам большой импульс.

Предположительно Git намного быстрее, чем Subversion из-за того, как он хранит/обрабатывает изменения, но у меня нет непосредственного опыта с ним.

Ответ 5

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

Какой метод доступа вы используете, также имеет значение. Хранилища, хранящиеся в удаленных файловых системах (с использованием файла:///access), будут намного медленнее, чем svnserve или Apache с mod_svn. Подумайте об использовании одного из последних, если у вас есть репозиторий на общем общем ресурсе файла.

Ответ 6

Убедитесь, что ваше соединение с сервером выполняется быстро, как может быть (гигабитный ethernet). Убедитесь, что сервер имеет быстрые диски в массиве. И, конечно, только проверьте, что вам нужно.

Ответ 7

TotoiseSVN по умолчанию рассматривает изменения файлов в фоновом режиме, и я видел, что это замедляет работу моей машины. Я изменил конфигурацию, чтобы исключить все, а затем включить только каталоги, в которых у меня есть выписки. Вы также можете отключить проверку фона. Обе эти настройки находятся в настройках "Наложение значков" node.

Ответ 8

Я нашел в своем собственном опыте (то есть: не через какие-либо реальные тесты), что, особенно если сервер репо SVN удален, использование внешних ресурсов замедляет работу. Если у вас есть дублированный код (например, ваш редактор FCK) в нескольких местах, я бы склонен придерживаться внешних ресурсов, поскольку сохранение этих файлов синхронизировано и управляемо более важно, чем скорость обновления. Однако вы могли бы использовать символические ссылки для приведения в дублированном коде. (Если вы используете Windows XP, вы можете использовать точки соединения).

Ответ 9

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

  • сборка верхнего уровня script запускает все скрипты сборки модулей.
  • внешние библиотеки не, хранящиеся в Subversion, но скорее вытаскиваются из сетевого диска с помощью Apache Ivy. (подумайте об этом как о собственном репозитории Maven).
  • зависимости между модулями также управляются с помощью Ivy.

Как правило, разработчикам необходимо обновить все свое дерево пару раз в неделю, но это легко сделать, прежде чем отправиться на обед/кофе-брейк.

Ответ 10

Использование прав доступа на чтение (т.е. ограничение доступа для чтения для определенных лиц/групп) значительно замедлит репозиторий. Особенно, когда аутентификация выполняется определенным образом, например, против домена Windows. То же самое справедливо и для прав доступа на запись, но запись менее частая, чем чтение. Ограничение доступа к записи может быть более важным, чем ограничение доступа для чтения.

Ответ 11

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

Ответ 12

Иногда медленная работа svn, особенно со многими внешними, связана с DNS. Похоже, svn выполняет поиск DNS на каждый svn: внешний, даже для относительных. Добавление вашего имени хоста svn-сервера в /etc/hosts или исправление resolv.conf может быть полезно.