SVN Externals, как составить список на Сервере и как его разветвлять? - PullRequest
0 голосов
/ 08 марта 2011

Мы переходим на Subversion и решаем, как лучше всего обращаться с общими объектами.Я осведомлен о Externals и собираюсь использовать их.Мы поддерживаем ряд приложений, ориентированных на базы данных, которые широко используют пакеты Oracle.Иногда одна и та же функциональность требуется в нескольких приложениях, поэтому мы повторно используем объект из app1 в app2.Возникают два вопроса, как показано ниже.

1 / Если мы начнем с общего объекта, создадим его в app1, сохраним в SVN в своей структуре репозитория и предоставим доступ к app2 через внешний источник.Можем ли мы позже разветвлять этот объект в app2 и расходиться?Будет ли история недавно разошедшегося объекта в app2 показывать свою историю обратно, включая историю как внешнюю от app1?

EDIT: для пояснения, после ветки app1.object! = App2.object.Итак, у нас есть объект, мы делимся им, и через некоторое время мы хотим расходиться с двумя объектами.Мы хотели бы иметь возможность проследить историю приложения app2.object, включая время, когда оно было копией app1.object

2 / Можем ли мы определить каждую конечную точку внешней ссылки?То есть есть ли утилита, которая сообщит мне, что app2, app5 и app6 все используют объект app1.object?Мне известно о вопрос списка SVN , но это работает с рабочей копией, в идеале я хотел бы иметь возможность запускать что-то на сервере, который просматривает хранилище.Я имею в виду написание доступного для пользователя инструмента для определения конечных точек каждого внешнего объекта "X".

Ответы [ 2 ]

0 голосов
/ 08 марта 2011
  1. Не уверен, что понимаю вопрос.В вашем случае app2 просто ссылка на app1.Вы не можете разветвлять app1 в контексте app2 - app1 не контролируется svn в дереве app2, это просто извлечение из дерева app2 для построения желаемой структуры каталогов в соответствии с вашими требованиями (например, для построения app2 и т.

  2. Когда вы используете svn: externals, рекомендуется указывать номер ревизии внешнего ресурса (см. здесь ).Например:

    сторонний / скины / инструментарий -r21 http://svn.example.com/skin-maker

0 голосов
/ 08 марта 2011

Итак, очень короткий ответ на # 1: да, вы можете переходить.Однако вам нужно изменить внешние элементы, чтобы они использовали новую ветвь.Итак, сначала вы разветвите общий проект (через svn copy), а затем измените внешний в app2 так, чтобы он указывал на новую ветку.И да, пока ветвление выполнено правильно, вся ваша история останется нетронутой.

Что касается вашего второго вопроса, насколько я знаю, такой утилиты не существует.Если вам нужно это выяснить, это будет достаточно просто автоматизировать с помощью скрипта.Это должно было бы проверить все потенциальные проекты, перебрать каждый и осмотреть внешние.Используя словарь, вы можете отслеживать, на какие репозитории ссылаются другие репозитории.Тогда немного форматирования и бац!Ты готовишь с огнем.Надеюсь, это поможет.

...