Как создать ветку - PullRequest
       29

Как создать ветку

1 голос
/ 05 июля 2011

Как создать ветку?
Может кто-нибудь объяснить мне этот синтаксис?

element  * /main/LATEST -mkbranch karthik_4 

И предположим, если моя последняя версия 6, но я хочу создать ветку на 4, как это делается?

1 Ответ

2 голосов
/ 05 июля 2011

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

Таким образом, следующая упорядоченная комбинация правила выбора будет:

  • отображать все элементы в их LATEST версии новой ветки
  • или, если нет новой ветви, отобразится LATEST версия main, готовая создать новую ветку в случае извлечения,
  • или, если это совершенно новый элемент («добавить в систему контроля версий»), создаст версию /main/0, а затем сразу же ответвится, чтобы создать версию 1 в новой ветви:

(опять же, эти 3 правила применяются по порядку, останавливаясь на первом подходящем, именно поэтому они упорядочены таким образом)

Это будет означать следующую конфигурационную спецификацию:

element * .../karthik_4/LATEST
element * /main/LATEST -mkbranch karthik_4 
element /main/0 -mkbranch karthik_4

Примечание: синтаксис ... / karthik_4 / LATEST существует для того, чтобы не связывать ветку karthik_4 с основной: даже если karthik_4 был создан сверху на любой другой ветке, main (что и есть .../ означает), он по-прежнему будет выбирать ПОСЛЕДНЮЮ версию этой новой ветви (если она существует, если нет, ClearCase пробует следующее правило)

Создание ветки всегда включает 3 правила, а не только одно.

Теперь, как вы видели ранее , это не создаст ветку из определенной версии (например, '4').
Он будет создавать ветвь только в той версии, в которой файл находится в последней версии в основной ветке: LATEST называется смещающей меткой: он перемещается автоматически при каждой новой версии.

Вы можете указать для одного файла точную версию, из которой вы хотите создать ветку:

element * .../karthik_4/LATEST
element /path/to/myFile /main/4 -mkbranch karthik_4 
element * /main/LATEST -mkbranch karthik_4 
element /main/0 -mkbranch karthik_4

Но это будет нелегко масштабировать, поскольку файл рядом с myFile может иметь другую историю, и его версия 4 могла быть создана задолго до или после myFile@@/main/4 (или версия 4 еще не существовала для других файлов!).

...