Спецификация конфигурации Clearcase с частным филиалом

StackOverflow https://stackoverflow.com/questions/244261

  •  04-07-2019
  •  | 
  •  

Вопрос

У меня на работе довольно сложная ветвящаяся структура (по крайней мере, для меня).Это что-то вроде этого:

Main
 |
 1
 |
 2
 | \
 3   \
     Ver2
      |
      1
      | \
      2   \ 
      |   ProjectA
      3      |
             1

От основного есть 2 филиала.«Вер2», в которой есть все изменения для следующей версии, и «ПроектА», который является моей работой.

Мой вопрос:Есть ли способ создать спецификацию конфигурации, которая знает, что было объединено, чтобы я получал:

  1. Все, что не было объединено из ProjectA
  2. Если ПОСЛЕДНЯЯ версия из ProjectA была объединена с версией Ver2, получите ПОСЛЕДНЮЮ версию из ветки Ver2.
  3. Если ветки ProjectA нет, получите от Ver2
  4. Если нет Ver2, получите из MAIN

Например, в приведенном выше случае, если я объединил версию 1 из ProjectA с версией 2 в ветке Ver2, то я хотел бы видеть версию 3 в Ver2.Однако, если я еще не объединил эти файлы, на мой взгляд, мне нужна версия 1 из ProjectA.

Это было полезно?

Решение

Вы должны помнить, почему вы определяете ветку :
Чтобы изолировать усилия по разработке.

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

V2 и проект A, например, должны быть там по двум различным причинам.

Если проект А предназначен для разработки текущей версии проекта, должно произойти слияние с веткой V2, чтобы можно было перенастроить некоторые из текущих разработок на ветку V2.

Исходя из этого, вы не должны хотеть видеть " оба " в том же виде: они представляют собой два разных набора файлов, V2 может включать большие рефакторинги с очень разными API.

Однако, если вы настаиваете на такой конфигурации, вы можете использовать возможность перемещения " MERGE_FROM_PA " label: каждый раз, когда вы объединяете некоторые файлы из ветки Project A в V2, вы снова устанавливаете " MERGE_FROM_PA " метка для каждого объединенного файла / каталога, перемещая эту метку из предыдущих версий V2 в их последние.

Спецификация конфигурации может быть:

element * MERGE_FROM_PA
element * .../ProjectA/LATEST
element * .../V2/LATEST
element * /main/LATEST

Но опять же, это не имеет особого смысла.

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

Другие советы

Я не думаю, что ты сможешь сделать это именно так.Однако то, что вы можете получить, является последней версией ProjectA;все в Вер2, что не было изменено в ProjectA;и все в MAIN, что не было изменено в Ver2 или ProjectA.Остальная часть трюка заключается в том, чтобы убедиться, что все необходимое было объединено из Ver2 или MAIN.Для этого вы можете использовать эталонное представление со спецификацией конфигурации для версии 2 (она вам не нужна для MAIN, если версия 2 не обновляется), а затем в представлении ProjectA выполните:

cleartool findmerge . -fta view-tag-for-ver2 -merge

Тем -fta означает «из тега».Конечно, есть множество дополнительных опций.

Это гарантирует, что ProjectA полностью обновлен по отношению к версии Ver2.

Почему нет? Мне не имеет смысла использовать ветку, если она где-то объединена.

Вот спецификация конфигурации:

element * {version(.../ProjectA/LATEST)&&!hltype(Merge,->)}
element * {version(.../Ver2/LATEST)&&!hltype(Merge,->)}
element * /main/LATEST

что делает этот рабочий процесс непоследовательным, если вы помечаете все это перед сборкой?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top