SVN: одна рабочая копия, два репозитория?

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

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

Ответов (8)

Решение

Взгляните на репликацию репозитория .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вам нужна запись через прокси .

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

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

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