2013-07-05 2 views
0

У меня есть полукомплексная настройка SVN, которую мне нужно настроить. Уже существует SVN-репозиторий, над которым работает сторонняя компания. Мы должны создать локальный репозиторий, который вытаскивает и объединяет код из своих, 3 виртуальных машины, которые являются рабочими копиями всей производственной среды, на которой разработчики собираются кодировать и фиксировать локальное репо, и производственную виртуальную машину, которая только тянет от местного репо.Синхронизация серверов SVN - расширенная настройка

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

SVN diagram

+0

Проверьте опции в SVNBook. Чтение SVNBook настоятельно рекомендуется до начала реализации решения. http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.reposadmin.maint.репликация – bahrep

ответ

1

Это становится немного сложно. Я полагаю, вы не хотите, чтобы ваше местное репо было доступно только для чтения, что затрудняет синхронизацию удаленного репозитория с локальным. Большинство схем svnsync зависят от того, являются ли они точными дубликатами друг друга.

Вам нужно будет отслеживать свою последнюю версию синхронизации из удаленного репозитория и использовать svnrdump dump, чтобы вытащить дамп несинхронизированных транзакций из удаленного репозитория. Я этого не делал, но это выглядит не так уж плохо. Однако вам придется закрыть локальный репозиторий, чтобы доставить ваши удаленные исправления, и вы должны убедиться, что локальные и удаленные находятся на двух разных URL-адресах.

+0

Возможно ли установить клиентский бот, который извлекает из удаленного репо и подталкивает файлы к локальному, проверяя, является ли mtime исходных файлов таким же, как mtime файлов в локальном репо? Если они отличаются друг от друга, не подталкивайте их к локальным, а сообщайте разработчикам о конфликте. Или что-то в этом роде ... –

+0

@AlexanderIvanov - В репозитории нет файлов _mtime_. Вам действительно нужно отслеживать последнюю версию, снятую с пульта, и загружать новые версии. Номера версий будут отличаться между локальным и удаленным репозиториями, поэтому нет реального способа рассказать об этом. Я думаю, вы могли бы посмотреть временную метку изменения и сравнить ее с меткой времени изменения в локальном репозитории, но я думаю, что вам лучше просто отслеживать сделанные изменения. –

+0

@ АлександрИванов - да, ** частично только **, с некоторыми трюками и * специальная * подготовка LocalRepo –

0

Настало время перейти на DVCS. Миграция из SVN в Mercurial не является большой головной болью и решает проблему многосвязных репозиториев (любого количества репозиториев) за стоимость двух команд.

Но, если вы по-прежнему предпочитают SVN-путь (плохой путь в этой ситуации): команды

  • Если MASTER может быть достигнуто с МЕСТНОГО вы можете использовать SVN с MASTER URL и получить результаты), вы можете построить и используйте «Vendor филиал» документооборот
    • MASTER дерево (/ багажник?), установленной в локальный репозиторий на некотором узле (за пределами ствола мЕСТНОГО в), используя SVN: внешние ссылки
    • местного развития происходит в стволе, как обычно
    • изменяется от MASTER должен быть интегрирован в к стволу время от времени с помощью очевидным слияния
  • Если MASTER не может быть достигнуто с LOCAL, но SVN-клиент (СВН на ноутбуке), который может взаимодействовать с обоими репозиториев, все еще можно найти
    • LOCAL необходимо быть создан из MASTER отвала с экономии UUID магистерскую на этапе загрузки
    • развития местного должно произойти не в багажнике, но и любой другой пользовательский филиал
    • клиент должен: а) проверки | обновить собственный туалет от MASTER б) переместите WC в LOCAL c) com МЯТ изменения локальных (вероятно, разрушающийся источник изменений)
    • MASTER изменяется от ТФоПа haveto быть объединены в отрасль разработки
Смежные вопросы