Вот что я сделал давно в подобных обстоятельствах, когда пропускная способность и ненадежные сети были проблемой:
- Сделайте копию репозитория и установите его в удаленном месте. Вы знаете, есть CVS1 и CVS2.
- Заблокируйте одну из двух копий (CVS1), запретив фиксацию. Это достигается путем изменения 'commitinfo' в модуле CVSROOT.
- CVS1 можно использовать только для обновлений
- CVS2 может использоваться для обновлений и фиксации
Если вы хотите предоставить доступ в коммите к копии 1, выполните следующее:
- Блокировка CVS2
- Копировать CVS2 в CVS1
- Разблокировать CVS1
Это звучит громоздко, и если вы делаете это вручную, но это работает. Это требует немного дисциплины, если вы делаете это вручную. Может быть, часовые пояса на вашей стороне на этот раз.
Я написал инструмент для отслеживания того, у кого есть токен фиксации, и для автоматической передачи репозиториев с одного сайта на другой через rsync и SSH. Это работало хорошо в течение нескольких лет. Мы никогда не теряли данные, и передача токена из одного места в другое заняла около 5 минут.
Инструмент переноса был написан на Perl, и мне потребовалось около двух недель, чтобы разработать его, работая над ним все время.
Я знаю, что давным-давно разработчики FreeBSD использовали CVSup , но я никогда не использовал этот инструмент сам.