Как найти файлы в моем текущем представлении, которые находятся в определенной ветке?

Допустим, у меня есть два файла: File1 и File2

На диаграмме дерева версий ниже * указывает версию моей рабочей копии, выбранную моей спецификацией конфигурации.

Деревья версий:

File1 разрабатывается на Branch2, но теперь объединен в ветку main

| main |
   |
  (0)----| Branch2 |
   |          |
   |         (0)
   |          |
  (1)*<------(1)     

File2 находится на Branch2 с несколькими версиями

| main |
   |
  (0)----| Branch2 |
              |
             (0)
              |
             (1)
              |
             (2)*

Спецификация конфигурации:

#Pick up Branch2 LATEST unless it has an outgoing merge hyperlink type
element * {version(.../Branch2/LATEST)&&!hltype(Merge,->)}    
element * /main/LATEST

Я бы хотел найти только те файлы, которые находятся на Branch2, которые я сейчас просматриваю.

Я пробовал это:

cleartool find . -cview -type f -version "brtype(Branch2)" -print

Он возвращает каждую версию каждого файла, который находится на Branch2

.\File1@@\main\Branch2\0
.\File1@@\main\Branch2\1
.\File2@@\main\Branch2\0
.\File2@@\main\Branch2\1
.\File2@@\main\Branch2\2

Я бы хотел только

.\File2@@\main\Branch2\2

Какая команда (-ы) cleartool find вернет в качестве результата только File2, версию рабочей копии? Я бы предпочел однострочную команду многоступенчатому процессу.

Чтобы уточнить

Мне нужны только перечисленные файлы, которые Branch2 и выбраны в качестве моей рабочей копии в соответствии с моей спецификацией конфигурации. .\File2@@\main\Branch2\2 находится на Branch2 и выбран в качестве моей рабочей копии. В качестве моей рабочей копии выбрана .\File1@@\main\1, которой нет на Branch2 и не должно быть в списке.


person jmstoker    schedule 12.09.2013    source источник


Ответы (2)


Было бы неправильно запрашивать конкретную версию, например "LATEST" для файлов в ветке, потому что нет гарантии, что ваша спецификация конфигурации фактически выберет ПОСЛЕДНЮЮ версию данной ветки.

Правильный способ - _ 2_ элементы:

  • в текущем виде (cview)
  • у которых есть версия в этой ветке (brtype)

Это означает:

cd /path/to/your/view/yourVob
cleartool find . -cview -type f -ele "brtype(Branch2)" -print

Это все равно даст вам File1, но это даст его как версию только в /main (не Branch2)

Затем вы можете легко отфильтровать то, что вам нужно:

cleartool find . -cview -type f -ele "brtype(Branch2)" -print | grep Branch2

Это по-прежнему одна команда, и она не предполагает, что вы выбираете LATEST из Branch2.
Если вы выбираете любую версию на Branch2, она будет результатом этой находки.

person VonC    schedule 13.09.2013
comment
Команда выполняется в Windows, но я могу с этим работать! - person jmstoker; 13.09.2013
comment
@jmstoker grep доступен для Windows с Gow (Gnu в Windows): я использую grep команды в мой сеанс DOS каждый день. - person VonC; 13.09.2013

Это даст вам последнюю версию в ветке

cleartool find . -type f -ele "version(.../Branch2/LATEST)" -print
person cmd    schedule 13.09.2013
comment
Ваше решение по-прежнему включает в себя версию File1. Я обновил свой вопрос, чтобы, надеюсь, прояснить, что мне нужно. - person jmstoker; 13.09.2013