2016-04-29 3 views
0

Итак, у меня есть эта неудобная ситуация «одна девушка с двумя чашками», где мы используем SVN для написания исследовательских работ. У нас есть общая база данных с библиографическими ссылками (мы, ученые, называем ее ссылками), которая хранится в отдельной папке и используется всеми бумагами, которые мы пишем. Структура выглядит следующим образом:Одна папка в нескольких SVN

[repository on server A] 
    PaperA 
     paperA.tex % uses "../references/refs.bib" 
    PaperB 
     paperB.tex % uses "../references/refs.bib" 
    PaperC 
     paperC.tex % uses "../references/refs.bib" 
    References 
     refs.bib 

До сих пор так хорошо.

Теперь мне нужно сотрудничать с коллегами из другого университета, которые не имеют доступа к этому SVN (у меня нет гостевых учетных записей, сделанных для этих людей из-за некоторых нелепых правил «не нашего государственного служащего/аппаратного обеспечения») , Так что мне нужно сделать, это начать публичный репозиторий, который они могут получить доступ, а также:

[repository on server B] 
    CollaborativePaper 
     paper.tex % will use "../references/refs.bib" 
    references 
     refs.bib % this now exists in two different repos 

мне было интересно, если есть способ сохранить references папку как-то синхронизирована между обоими РЕПО? Я предполагаю, что то, что я сделал бы в Linux, было бы символической ссылкой на те же файлы/каталог, которые были бы привязаны к обоим репозиториям, поэтому каждый раз, когда я проверю изменения с одного, я мог бы передать его другому, не копируя файлы вручную и слияние будет позаботиться. Но я в Windows, поэтому нет такой удачи.

Я искал svn:external элементов, которые были бы замечательными в этой ситуации, за исключением того, что коллеги из другого университета не имеют доступа к обоим репозиториям, и поэтому они бесполезны.

Я также рассматривал ветви поставщиков, но это в основном ручные копии файлов с причудливым именем и не синхронизировать оба РЕПО для меня (или, по крайней мере, это мое понимание).

Я также изучал вложенную рабочую копию, которая работает для меня лично, но вложенные файлы (refs.bib) никогда не передаются в совместное репо, поэтому коллеги из другого uni не смогут его использовать/вносить в него изменения.

Есть ли способ иметь одну физическую папку в двух репозиториях SVN, работающих на разных серверах, в Windows?

EDIT: В то время как это похоже на Same working copy of the code with 2 SVN servers (на что сами ответили другие вопросы), есть некоторые отличия. Первый вопрос How to synchronize two Subversion repositories? предполагает, что пользователи имеют учетные данные для обоих серверов. Это не так. Второй Can I have one project in two SVN repositories? не предполагает сотрудничества (OP просто хочет, чтобы его файлы были безопасными в течение выходных, пока он не придет в офис в понедельник, чтобы совершить). Третий SVN: one working copy, two repositories? - это сочетание двух. Ни один из ответов на эти вопросы не предлагает для меня приемлемых решений.

+0

Возможный дубликат [То же рабочее копирование кода с двумя серверами SVN] (http://stackoverflow.com/questions/605441/same-working-copy -of-the-code-with-2-svn-servers) – mrt

ответ

2
  1. С DVCSes (любой) вместо SVN вы будете иметь меньше головной боли в таких «распределенных» команд (я рекомендую Mercurial с subrepos, не Гит с чем)
  2. Да, это внешние Правильный ответ, только в немного хитроумном образом:
    • на внешнем хосте, куда можно добраться из обоих университетов, хранилище для хранения References папки должны быть созданы
    • Ваш местный References необходимо переместить в REMOTE (load | dump), физическую папку необходимо удалить и заменить с помощью определения внешних (0).
    • Иностранные коллеги также добавляют внешние References к собственному репо (или используют ту же инфраструктуру с основание дерева за пределами References)

на нижнем уровне:

  • да, локальное хранилище будет иметь в нем только некоторые дополнительные метаданные «этот узел должны быть получены ЗДЕСЬ»
  • для рабочей копии клиента внешних внешних репозиториев, заданных в локальном репо, создаст вложенную рабочую копию, связанную с удаленным репо (вы можете увидеть ее при появлении дополнительной папки в корне проверенных внешних файлов). Это нормально (в обычном смысле) рабочая копия, соответствующая всем стандартным условиям и требованиям для WCes (все необходимые действия просто отвечали за WCes - обертку и вложенные) и да: если репозиторий не открыт, вы должны предоставить с клиентской стороны все требуемые учетные данные, , но ... Уникальный пользователь для каждого клиента является очевидным излишеством: с функциональной стороны достаточно иметь 2 пользователя - «Reader» и «Full Access» (для коммиттера, в заказ не меняет учетные данные «на лету» в процессе)
+0

Правильно, так очевидно, просто сохраняя ссылку как внешний на доступном хосте делает трюк. Должен был подумать об этом ... –

+0

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

+1

@theswine - слишком длинный для комментариев, будет добавлять детали как редактировать в ответ –

Смежные вопросы