Поиск изменений между метками


Используя cleartool, я могу найти все файлы, связанные с меткой, используя что-то вроде:

ct find -avobs -version "lbtype (Build-Label)" -print

Как найти все объекты, измененные (включая добавление и удаление) между двумя метками?

4 4

4 ответа:

В ClearCase (под администрированием в моей установке) есть построитель отчетов. В разделе элементы / метки Вы можете выбрать "элементы, измененные между двумя метками" или "версии, измененные между двумя метками" в зависимости от того, что вам нужно. Затем можно выбрать путь для анализа и выбрать две метки для сравнения.

После запуска процесса вы можете сохранить результаты в формате HTML, XML или CSV.

Как указано в ответе на "Как искать файлы по метке "

cleartool find -all -element "{lbtype_sub(REL1)}" -print

Проще и lbtype_sub позволяют запросу быть истинным, если любая версия элемента имеет метку
(см.query_language man page )

cleartool find -all -element '{lbtype_sub(REL1) && lbtype_sub(REL2)}' ^ 
  -version '{!(lbtype(REL1) && lbtype(REL2)) && ^
  (lbtype(REL2) || lbtype(REL1))}' -print 

Найдет все элементы, которые не имеют обеих меток, перечисляя все версии в текущем VOB, помеченные либо REL1, либо REL2, но не обе.

Примечание: если метка является базовой линией UCM, это еще проще.(ct diffbl):

ct diffbl -ver BL1@\myPVob BL2@\myPVob

Есть и другой способ сделать это, где LABEL1 - старая метка, а LABEL2 - последняя. Проверьте дату создания меток и замените их перед выдачей команды, так как она печатает отрицание условного оператора &&. Работает как по волшебству!

Введите описание изображения здесь

$(cleartool find $PWD -ver "!lbtype($LABEL1) && lbtype($LABEL2)" -print)

Чтобы найти все элементы, а также удаленные или не выбранные вашим config_spec, добавьте –nvisible в параметры поиска.

Для сравнения у меня есть скрипт оболочки под названием freeze-list, который более или менее выполняет ту же команду find, что и у вас (перенаправляя вывод на <label>.versions).

Затем у меня есть несколько других сценариев perl, которые берут два таких файла, читают их и сравнивают каждый элемент. У меня есть, например, freeze-compare-text для простого вывода diff -u, freeze-compare-kdiff3, чтобы начать сравнение kdiff3 на каждом файле, где есть некоторые изменения (с некоторым интеллектом, чтобы избежать ложных срабатываний, когда элемент 0 на новой ветке идентичен начальной версии и т. д.). И у меня также есть freeze-compare-diffstat (в основном передача выходных данных в diffstat).

Если вы просто заинтересованы в поиске изменений между метками в качестве одноразовой операции, вы можете запустить

ct find -avobs –nvisible -version "lbtype(label1)" -print | sort > label1.versions
ct find -avobs –nvisible -version "lbtype(label2)" -print | sort > label2.versions
comm -3 label1.versions label2.versions

, который перечислит все элементы, которые не имеют идентичных версий в label1 и label2.