Оптимизация SVN для обеспечения быстрого реагирования больших репозиториев

Мы с радостью используем SVN для SCM на работе. В настоящее время у меня есть наши двоичные активы в том же репозитории SVN, что и наш код. SVN поддерживает очень большие файлы (он передает их «в потоке», чтобы сохранить разумное использование памяти), но делает все SLOOWWWWW. Я нормально отношусь к медленным версиям ресурсов, но медленные текстовые операции на самом деле неприемлемы.

Сейчас активы находятся в / trunk / release (рядом с дюжиной / trunk / projects). Стоит ли хранить их в отдельном репозитории? Какие еще оптимизации мы можем сделать? У нас около 1 ГБ активов, и они растут.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 258
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы не сказали, какие оптимизации вы уже используете. Если вы используете bsdfs, посмотрите, повысит ли производительность переход на fsfs. Если у вас много ревизий, переключитесь на более новую версию на сервере и преобразуйте репозиторий в формат 1.5.

Ответ принят как подходящий

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

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

Revnum SVN не зависит от проекта, а от репозитория. Ошибочно думать, что foo получает новый revnum - если в foo ничего не изменилось, он не получит новый revnum! Текущее значение revnum для foo - это либо HEAD, либо последний номер revnum, в котором проект foo был изменен.

gbjbaanb 23.07.2010 20:34

вероятно, лучший ответ, который вы получите, - это поместить ваши двоичные файлы в отдельный каталог и использовать функции Spare Directory для управления ими, то есть не извлекать файлы, пока они вам не понадобятся. Тогда все операции будут происходить с исходными файлами, а не с двоичными файлами.

В качестве альтернативы вы можете использовать тот же механизм для фиксации или обновления - вместо обновления вашей Рабочей копии вы можете использовать `` обновить до ревизии '' и указать HEAD и уменьшенную глубину, чтобы двоичный каталог не обновлялся (пока вам не понадобится к).

Вы также можете упаковать свои репозитории с помощью svnadmin, что повысит производительность на стороне сервера.

Другие вопросы по теме