SVN: одна рабочая копия, два репозитория? - PullRequest
19 голосов
/ 24 февраля 2009

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

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

Ответы [ 8 ]

11 голосов
/ 24 февраля 2009

Посмотрите на Репликация репозитория .

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

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

7 голосов
/ 24 февраля 2009

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

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

3 голосов
/ 24 февраля 2009

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

1 голос
/ 29 июля 2009

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

1 голос
/ 24 февраля 2009

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

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

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

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

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

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

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

1 голос
/ 24 февраля 2009

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

0 голосов
/ 24 февраля 2009

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

0 голосов
/ 24 февраля 2009

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

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

Что вам нужно, так это запись через прокси .

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

...