Как я могу улучшить производительность CVS в сценарии с несколькими сайтами?

StackOverflow https://stackoverflow.com/questions/138280

  •  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 но я никогда не использовал этот инструмент сам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top