Как я могу улучшить производительность CVS в сценарии с несколькими сайтами?
-
02-07-2019 - |
Вопрос
В настоящее время я работаю над проектом с разработчиками, работающими над тремя сайтами.Одна из площадок находится в Дели, Индия, а две другие — в Европе.Связь между европейскими офисами и офисом в Дели имеет плохую пропускную способность и довольно большую задержку, а обновление CVS оттуда часто занимает 5-10 минут, даже если изменилось лишь несколько файлов.
Есть ли какие-нибудь хорошие прокси-серверы CVS или какой-нибудь аккуратный способ синхронизации отдельных серверов CVS?Есть ли у вас какие-либо другие советы о том, как можно улучшить производительность в этом сценарии?
К сожалению, в рамках этого проекта мы застрянем на CVS, поэтому переход на что-то совершенно другое невозможен в краткосрочной перспективе.
Решение
Почему не переключается опция?
Я бы настоятельно рекомендовал вместо этого переключиться на SVN или git.И чтобы вы сделали это преобразование как можно скорее...как сегодня :)
Есть даже инструменты/руководства по SVN и инструменты/руководства по Git там, который сделает это преобразование CVS для вас.
Лично я использую и люблю SVN для своей работы, но, судя по вашему приведенному выше описанию, похоже, что git может быть для вас лучшим вариантом.
Другие советы
Вот что я сделал давным-давно в аналогичных обстоятельствах, когда проблемой была пропускная способность и ненадежные сети:
- Сделайте копию репозитория и установите его в удаленном месте.Вы знаете, что у вас есть CVS1 и CVS2.
- Заблокируйте одну из двух копий (CVS1), предотвратив фиксации.Это достигается путем изменения «commitinfo» в модуле CVSROOT.
- CVS1 можно использовать только для обновлений.
- CVS2 можно использовать для обновлений и фиксации
Если вы хотите предоставить доступ в коммите к копии 1, действуйте следующим образом:
- Блокировка CVS2
- Скопируйте CVS2 в CVS1
- Разблокировать CVS1
Это звучит громоздко, если делать это вручную, но это работает.Это требует некоторой дисциплины, если вы делаете это вручную.Возможно, часовые пояса на вашей стороне.
Я написал инструмент, позволяющий отслеживать, у кого есть токен фиксации, и автоматически переносить репозитории с одного сайта на другой через rsync и SSH.Пару лет всё работало хорошо.Мы ни разу не потеряли данные, а передача токена из одного места в другое заняла около 5 минут.
Инструмент переноса был написан на Perl, и на его разработку у меня ушло около двух недель, работая над ним полный рабочий день.
Я знаю, что давным-давно разработчики FreeBSD использовали CVSup но я никогда не использовал этот инструмент сам.