Я изменил и зарегистрировал кучу файлов в моей ветке. Теперь мне нужно получить список файлов, которые я модифицировал. Есть ли сценарии для этого?
Как найти файлы, измененные под ветвью очистки
Ответ 1
команда cleartool find
должна помочь вам найти любой элемент (файл) с хотя бы одной версией в данной ветке.
Ниже перечислены все файлы на ветке
cleartool find . -type f -branch "brtype(mybranch)" -print
См. найти примеры или " Дополнительные примеры cleartool find команда "для получения дополнительных примеров.
OP sarath добавляет:
он дает мне искаженное имя файла с @и другими символами. Можно ли получить нормальный путь?
Правда, такая команда даст вам что-то вроде (в качестве примера):
.\[email protected]@\main\MyBranch
.\[email protected]@\main\MyBranch_Int\MyBranch
.\[email protected]@\main\MyBranch_Int\MyBranch
.\[email protected]@\main\MyBranch_Int\MyBranch
Чтобы получить только путь, у вас есть два решения:
1/найдите элементы (а не версии) с правой ветвью:
cleartool find . -type f -ele "brtype(mybranch)" -print
(обратите внимание на -ele
, заменив -branch
)
Это даст:
.\[email protected]@
.\[email protected]@
.\[email protected]@
.\[email protected]@
.\[email protected]@
Но у вас все еще есть "уродливый" "@@
".
2/объедините find с директивой exec, которая описывает элемент, найденный с fmt_ccase
format:
cleartool find . -type f -ele "brtype(mybranch)" -exec "cleartool descr -fmt \"%En\n\" \"%CLEARCASE_PN%\""
Многострочная форма для читаемости:
cleartool find . -type f -ele "brtype(mybranch)" \
-exec "cleartool descr -fmt \"%En\n\" \"%CLEARCASE_PN%\""
Обратите внимание, что все "внутренние" двойные кавычки должны быть экранированы.
%En
предоставит вам имя найденного элемента.
.\.checkstyle
.\.classpath
.\.classycle
.\.fbprefs
.\.pmd
.\.project
.\.settings\dico.txt
Ответ 2
Команда find - лучший источник. Чтобы решить проблему OPs о возврате "поврежденного" имени с @@и всей информацией о ветке и версии, можно добавить опцию -nxn, чтобы не предоставлять эту информацию. Это намного проще, если выполнить поиск элемента в сочетании с директивой exec для форматирования вывода.
cleartool find . -type f -branch "brtype(mybranch)" -nxn -print
Ответ 3
Приведенная выше команда даст все файлы, модифицированные в частности branch(myBranch)
.
Но если вы хотите найти файлы, измененные конкретным пользователем в конкретную дату, вам понадобится следующая команда:
cleartool find . -version "{created_since(28-APRIL-2011.23:00:00) \
&& (!created_since(29-APRIl-2011.23:00:00)) \
&& brtype(BR_test) \
&& created_by(p723029)}" \
-exec "cleartool describe -fmt \nName\t\t:\040%En\nResponsible\t:\040%u\nDate\t\t:\040%d\nComment\t\t:\040%c\n %CLEARCASE_XPN%" \
-print >> D:\test.xls
(в одной гигантской линии для цели копирования/вставки:)
cleartool find . -version "{created_since(28-APRIL-2011.23:00:00) && (!created_since(29-APRIl-2011.23:00:00)) && brtype(BR_test) && created_by(p723029)}" -exec "cleartool describe -fmt \nName\t\t:\040%En\nResponsible\t:\040%u\nDate\t\t:\040%d\nComment\t\t:\040%c\n %CLEARCASE_XPN%" -print >> D:\test.xls
Ответ 4
Используйте следующий script
#!/bin/sh
display()
{
echo "usage: $0 branchname -v vobs"
echo " branchname: optional, if absent uses the current view-name"
echo " -v vobs: optional, if absent uses default vob list"
}
if [ $# -gt 1 ]; then
if [ $1 == -v ]; then
branch=`basename $CLEARCASE_ROOT`
VOB_LIST=${@:2:($# - 1)}
elif [ $2 == -v ]; then
branch=$1
VOB_LIST=${@:3:($# - 2)}
else
display
exit 1
fi
else
VOB_LIST="/vobs/abc /vobs/def /vobs/ghi /vobs/jkl /vobs/mno"
if [ $# -eq 1 ]; then
if [ $1 == -h ]; then
display
exit 0
else
branch=$1
fi
else
branch=`basename $CLEARCASE_ROOT`
fi
fi
echo "Searching for files of branch <$branch> in following vobs:"
echo "$VOB_LIST"
echo "================================================================"
cleartool find $VOB_LIST -all -version "version(.../$branch/LATEST)" -print
Сохраните это в файле ctlsbr и используйте это из vob, который вы хотите найти в списке измененных файлов.
Спасибо, Amit
Ответ 5
попробуйте эту команду
cleartool find -avo -nxname -element '{brtype(branch_name)}' -print