Подтвердить что ты не робот

Как найти файлы, измененные под ветвью очистки

Я изменил и зарегистрировал кучу файлов в моей ветке. Теперь мне нужно получить список файлов, которые я модифицировал. Есть ли сценарии для этого?

4b9b3361

Ответ 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