2008-08-22 5 views
3

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

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

ответ

0

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

2

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

ОБНОВЛЕНИЕ: Извините, я некоторое время находился в Меркуриальной земле и забыл, что подрывная деятельность не поддерживает поддержку тегов. Предполагая, что вы используете обычную структуру списочной подрывной

/ 
    /trunk 
    /tags 
    /branches 

вам просто нужна запустить

svn copy trunk/ tags/TagName 

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

3

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

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

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

2

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

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

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

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

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

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

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

+0

Проклятые. Это один классный инструмент> +1 – Ben 2010-01-23 10:17:24

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