Нужно ли блокировать исходный репозиторий во время svnsync?

Я использую svnsync для переноса (большого) репозитория на новый сервер. Я начал запускать его прошлой ночью. Он прошел около 1/3 пути, прежде чем тайм-аут сети прервал его. Я возобновил синхронизацию сегодня утром, так что теперь она будет работать в течение дня.

Поскольку людям по-прежнему нужно работать, возникнут ли какие-либо проблемы, если люди продолжат фиксировать данные в репозитории SOURCE во время выполнения операции synchronize?


person Kricket    schedule 04.06.2015    source источник
comment
Я не могу найти доказательств, но я верю, что люди могут совершать безопасные транзакции   -  person Sergey Azarkevich    schedule 04.06.2015
comment
У меня такое же впечатление, но я надеялся, что у кого-то есть реальная ссылка (или опыт).   -  person Kricket    schedule 04.06.2015
comment
У меня был такой опыт. Мы настроили jenkins для запуска svnsync после каждой фиксации, и проблем не было.   -  person Sergey Azarkevich    schedule 04.06.2015
comment
Это не совсем то же самое. svnsync просто синхронизирует несинхронизированные версии, поэтому ваша работа jenkins, по сути, просто захватила последнюю фиксацию и сделала резервную копию. Моя проблема заключается в том, что у меня долгое задание синхронизации, и мне нужно знать, могут ли люди фиксировать исходный код, пока синхронизация все еще выполняется.   -  person Kricket    schedule 04.06.2015
comment
Я не думаю, что это действительно отличается. Первый svnsync передает 1:HEAD, последующие вызовы передают N:HEAD. Насколько я понимаю, svnsync использует тот же протокол для получения изменений, что и инструменты командной строки, поэтому он вообще не может получить неверный/неполный коммит.   -  person Sergey Azarkevich    schedule 04.06.2015
comment
То есть вы говорите, что каждая синхронизация ревизий — это атомарная операция? Другими словами, операция синхронизации на самом деле представляет собой целую кучу более мелких операций, выполняемых последовательно? (Я подозреваю, что вы правы, но можете ли вы найти ссылку?)   -  person Kricket    schedule 04.06.2015
comment
Да, я думаю. Но, к сожалению, не могу найти ссылки...   -  person Sergey Azarkevich    schedule 04.06.2015
comment
Этот парень рекомендует НЕ менять источник: cmsproducer.com/ анализ/инфраструктура/   -  person Kricket    schedule 04.06.2015
comment
Кстати, svn book говорит: вместо того, чтобы инициализировать совершенно новый репозиторий как зеркало, а затем синхронизировать с ним всю историю, администраторы обнаружат, что гораздо быстрее сначала сделать копию зрелого репозитория (возможно, с помощью горячей копии svnadmin), а затем использовать svnsync initialize --allow-non-empty для инициализации этой копии как зеркала, которое теперь уже соответствует оригиналу. Это может решить проблему с долгой первой синхронизацией.   -  person Sergey Azarkevich    schedule 04.06.2015
comment
Проблема в том, что у меня нет доступа к файловой системе ни к одному из репозиториев, поэтому я не могу использовать svnadmin. (Хотя я рассматривал возможность использования svnrdump, но решил, что svnsync сводится к тому же самому, без создания большого файла дампа.)   -  person Kricket    schedule 04.06.2015


Ответы (1)


Нет, это не так.

Я действительно перерыл весь инет, но не смог найти ни одной ссылки. Решили рискнуть и попробовать. Коммит прошел, и svnsync продолжал работать без каких-либо явных проблем.

ОДНАКО: синхронизация остановится до того, как будет установлена ​​последняя версия. Например: предположим, когда вы начинаете синхронизацию, последняя ревизия — 100. Во время операции синхронизации вы фиксируете r101. В этом случае svnsync остановится на ревизии 100. Таким образом, вам нужно повторно запустить svnsync, чтобы получить последнюю оставшуюся ревизию.

person Kricket    schedule 05.06.2015