Поиск изменений между метками
Используя cleartool, я могу найти все файлы, связанные с меткой, используя что-то вроде:
ct find -avobs -version "lbtype (Build-Label)" -print
Как найти все объекты, измененные (включая добавление и удаление) между двумя метками?
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.