Сведения о вопросе

Life

12:05, 12th August, 2020

Теги

svn   synchronization    

Синхронизация библиотек / репозиториев проекта subversion

Просмотров: 433   Ответов: 4

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

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



  Сведения об ответе

prince

10:33, 20th August, 2020

Вариант, который может сработать для вас, - использовать ссылку svn:external на библиотеку. При пометке проекта можно выполнить одно из двух действий:

  • Обновите svn:external для ссылки на конкретную редакцию библиотеки; OR
  • Обновите svn:external для ссылки на новый тег, созданный в библиотеке.

Поскольку метаданные svn:external будут частью истории фиксации основного проекта, вы всегда можете получить тег в основном проекте, и он будет ссылаться на правильную версию библиотеки. Мы делаем это, и это работает очень хорошо. Это также удобно, когда вы хотите заморозить версию кода библиотеки, от которой вы зависите при подготовке к выпуску.


  Сведения об ответе

JUST___

01:04, 6th August, 2020

Я думаю, что если бы я собирался сделать это, я бы использовал теги. Было бы довольно легко написать сценарий, который будет помечать оба репозитория одним и тем же ID каждый раз, когда вы обновляете библиотеку и используете ее в проекте. Затем, если вам нужно вернуться к предыдущей версии, вы просто видите, какой был его самый последний тег, и откатываете библиотеку обратно к этой версии.

UPDATE: Извините, я был на земле Mercurial некоторое время и забыл, что subversion напрямую не поддерживает теги. Предполагая, что вы используете обычную структуру каталогов subversion

/
  /trunk
  /tags
  /branches

вам просто нужно бежать

svn copy trunk/ tags/TagName

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


  Сведения об ответе

PIRLO

21:06, 1st October, 2020

Вы можете найти поршень обеспечивает решение

Он в основном используется для импорта плагинов ruby на rails, но я не вижу, почему он не должен работать для любых репозиториев subversion.

В основном то, что он делает это:

  • svn экспорт последней редакции удаленного пути
  • зафиксируйте эти файлы в вашем локальном svn, как если бы они были локальными файлами
  • прикрепите метаданные в виде свойств svn об удаленном пути и ревизии

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

если вы хотите обновить локальную копию библиотеки до последней удаленной версии, вы просто делаете piston update

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


  Сведения об ответе

repe

14:16, 19th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться