Удаленный код Subversion с версией

У меня уже настроен svn-сервер. Мне нужно разместить код проекта на другом компьютере в другой подсети, чем сервер svn.

Это примерно так: есть этот сервер, настроенный с помощью Subversion, содержащий множество кодов из многих проектов. Мне нужно разместить код на другом компьютере, чем сервер svn, чтобы разрешить доступ к серверу LDAP, размещенному в другой подсети. Раньше я использовал уловку, проверяя код на этой машине каждый раз, когда отправлял новый код на машину svn server. Мой вопрос в том, есть ли способ заставить svn удаленно управлять кодом на этой машине, а не создавать локальный репозиторий dir на себе.

Спасибо


person Willian Costa    schedule 01.04.2013    source источник
comment
Добро пожаловать в Stack Overflow! К сожалению, сложно понять, о чем вы просите. Не могли бы вы немного уточнить, возможно, покажите нам, что вы пробовали?   -  person oefe    schedule 01.04.2013
comment
Я не совсем понимаю, при чем тут разные подсети. Вы хотите проверять код на сервере LDAP каждый раз, когда совершается фиксация?   -  person oefe    schedule 02.04.2013
comment
Я хочу создать зеркальный репозиторий, который автоматически фиксирует любые изменения, внесенные в оригинал, на другой компьютер, который будет обслуживать код. Эта вторая машина - единственная, которая может получить доступ к серверу LDAP, потому что она находится в другой подсети, чем сервер svn.   -  person Willian Costa    schedule 02.04.2013
comment
Если вы действительно хотите отразить репозиторий, а не только рабочую копию, посмотрите svnsync. Однако вам все равно потребуется рабочее сетевое соединение между ними. Также обратите внимание, что зеркала доступны только для чтения.   -  person oefe    schedule 02.04.2013
comment
Спасибо, это как раз то, что мне нужно. Теперь мне нужно заставить svnsync работать как сервис, автоматически синхронизируя каждое изменение, сделанное в исходном репозитории.   -  person Willian Costa    schedule 03.04.2013
comment
Хорошо, поэтому я преобразовал свой комментарий в ответ и добавил несколько способов автоматизировать синхронизацию.   -  person oefe    schedule 04.04.2013


Ответы (1)


Если вы действительно хотите отразить репозиторий, а не только рабочую копию, посмотрите svnsync. Однако вам все равно потребуется рабочее сетевое соединение между ними. Также обратите внимание, что зеркала доступны только для чтения.

Есть много способов запустить синхронизацию:

  1. Обычный способ - вызвать его из обработчика post-commit на мастере. Если вы вызываете синхронизацию в обычном режиме, то есть синхронно, пользователи могут заметить, что фиксация занимает больше времени, так как приходится ждать завершения синхронизации. Вероятно, это не большая проблема, если у вас быстрое соединение, однако, если вы синхронизируете с удаленным сайтом или с несколькими зеркалами, это может довольно раздражать.
  2. Чтобы избежать этой задержки, вы можете выполнить синхронизацию асинхронно. В Unix это так же просто, как добавить к команде &. В Windows я не мог заставить это работать.
  3. В качестве альтернативы вы можете просто запустить небольшой сценарий на главном или подчиненном сервере, который запускается synsync каждые n секунд. Это вызовет дополнительную нагрузку на сеть из-за ненужных синхронизаций, и ведомое устройство будет обновлять немного медленнее, но это может быть приемлемо в вашем случае.
person oefe    schedule 03.04.2013