2009-02-24 13 views
19

Я хотел бы знать, как я могу установить два репозитория для моей одной рабочей копии. Мне нужен один репозиторий на моем сервере, так что я могу проверить/отключить между двумя ПК; Мне нужен другой репозиторий на моем локальном компьютере, так что я могу быстро увидеть результат diff (мой сервер svn находится на медленном общем хосте)SVN: одна рабочая копия, два репозитория?

Как я могу это сделать?

+0

Это полезно для проектов с открытым исходным кодом при отправке патча, но не ожидая, что оно будет одобрено до создания другого. – dbkk

+0

Большинство проектов в наши дни использует Git, что я сделал, клонировал репозиторий GIT и Subversion'ed. Я могу обновить Git-копию и обновить ее, а также сохранить мои изменения, с меньшими конфликтами. Думал, что это даст вам совет! – asyncwait

+0

Возможный дубликат [Могу ли я иметь один проект в двух хранилищах SVN?] (Http://stackoverflow.com/questions/425975/can-i-have-one-project-in-two-svn-repositories) – JasonMArcher

ответ

11

Посмотрите на repository replication.

Вы можете настроить задание cron для периодической синхронизации с одним хранилищем с другим хранилищем. Но вы должны убедиться, что совершение произойдет только с одним из двух.

Если фиксации произойдут с обоими репозиториями, возможно, распределенная система управления версиями, такая как git, Bazaar или Mercurial - это больше в вашем переулке? Git, например, позволяет даже вытащить и напрямую нажать на репозиторий Subversion.

1

Если ваш локальный ящик является linux, вы можете создать запись crontab для обновления svn каждые X минут, чтобы синхронизировать его с сервером в фоновом режиме. Оттуда у вас будет самая последняя копия на вашем локальном сервере svn для отличия.

7

Subversion не использует сетевой доступ для своей работы с diff. Это одно из больших преимуществ Subversion над CVS. Поэтому я не уверен, почему вы столкнулись с этой конкретной проблемой.

Альтернативой является использование Git и, в частности, git-svn на вашем локальном ПК. Вы получаете полную копию всей истории хранилища на своем локальном компьютере, с возможностью локального обнаружения и просмотра истории (наряду со многими другими функциями, которые дает Git). Когда это возможно, я теперь использую git-svn для доступа к репозиториям Subversion.

+1

Это только локальная операция, отличая локальную версию от исходной рабочей копии. Если вы отличаетесь от предыдущих версий, то это удаленная операция. – Evan

+0

Конечно, местная разница в том, что вы делали 90% времени, но вопрос не определил это окончательно. – Evan

3

Если вам не нужно использовать SVN, возможно, вам будет лучше использовать систему управления распределенной версией, такую ​​как Mercurial или Git. Каждый ПК будет иметь свою собственную копию репозитория, а изменения могут быть синхронизированы либо напрямую между ПК, либо через другую копию на центральном сервере. Поскольку каждый ПК имеет полный репозиторий, хранящийся локально, вы можете выполнять diff или любую другую операцию без доступа к сети.

1

Вы можете использовать svk как ваш локальный клиент вместо svn. Svk - это псевдораспределенная система управления версиями, использующая svn-репозитории.

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

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

Два предостережения:

  1. Будьте готовы использовать командную строку. Насколько мне известно, нет TortoiseSVK или другого графического интерфейса.
  2. Я использовал только svk на linux. Если вы используете окна, я не уверен, насколько хорош клиент.

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

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

+0

+1 швейцарский аналог армейского ножа –

0

Я не уверен, что стандартная репликация репозитория даст вам то, что вы хотите. С этой настройкой один прокси-сервер всегда доступен только для чтения, и я не думаю, что в вашей ситуации это так.

Вам нужно будет сделать переключатель svn -relocate, чтобы переключить репозиторий, который вы просматриваете непосредственно перед регистрацией. Некоторая ошибка.

Зачем вам нужен write through proxy.

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

0

Результат svn diff не зависит от скорости вашего соединения с сервером; это полностью локальная операция.

1

SVN по своей сути не подходит для таких случаев использования. Вам нужно будет подбирать вещи здесь и там (например, писать коронки). Если вы хотите что-то, что работает из коробки, чтобы удовлетворить такие варианты использования, попробуйте GIT.