SVN externals - есть ли что-то между плавающим и закрепленным внешним? - PullRequest
2 голосов
/ 03 сентября 2010

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

Что мне действительно нужно, так это промежуточная функция, которую я собираюсь назвать «отслеживание внешнего». Они должны работать следующим образом:

а) Если я проверяю голову, я получаю головку внешнего

b) Если я проверяю ревизию X, я получаю ревизию X внешнего

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

Эта функция, кажется, не существует в SVN, но кажется очевидной возможностью для реализации. Кто-нибудь знает, существует ли эта функция или планируется, или ее можно эмулировать с помощью какой-то хитрости SVN?

Спасибо Акаша

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Я думаю, что вы спрашиваете не правильное использование внешних. Вы делаете это неправильно.

Внешние устройства извлекают код из ... где-то еще. Это «где-то еще» может быть другим местом в вашем текущем хранилище, или это может быть другое хранилище на вашей машине, или хранилище, размещенное на машине на другом конце света ...

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

Как вы можете обеспечить синхронизацию ревизий основных репозиториев с ревизиями внешних репозиториев? Что должно произойти, когда ваш репозиторий имеет версию 1000, а внешний репозиторий только с версией 300?

Чтобы ответить на ваш вопрос: я понятия не имею, планируется ли что-то подобное в будущих версиях SVN, но я бы поспорил. Что касается «хитрости», вы, возможно, могли бы достичь этого, создав своего рода скрипт-обертку, который мог бы модифицировать внешние свойства, чтобы закрепить их при пересмотре, который вы планируете проверить, ДО того, как вы на самом деле его проверите. Не то, что я бы посчитал практичным и не совсем тривиальным.

0 голосов
/ 03 сентября 2010

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

...