Версия элемента пакетного обновления PTC Integrity

Есть ли способ обновить ревизию члена большого списка файлов через командную строку?

Я не могу использовать :working или :head, но мне нужно указывать разные версии для каждого файла.

Насколько мне известно, --selectionFile принимает в качестве входных данных только пути, но не номера ревизий.

edit: Я хотел установить member очень большой список файлов, и я хотел избежать написания команды si updaterevision ... для каждого файла, так как для такого количества файлов требуется много времени. Вместо этого я хотел знать, есть ли более продвинутый метод для указания списка файлов и их ревизий, чтобы иметь возможность запускать updaterevision только один раз (например, с :working) для всего списка файлов.

Но, как сказано в комментарии, такой возможности нет.

edit2: Я использую MKS уже пару лет и, как я теперь знаю, нет такой возможности (по крайней мере, до MKS 11.6) для обновления многих файлов на разные исправлений с помощью одного единственного вызова командной строки. Но использование одного вызова для каждого члена, как было предложено, привело к тому, что вся операция заняла до нескольких часов, так как у меня было много тысяч участников в песочнице, и MKS требуется некоторое время для выполнения каждой siкоманды.


person Federico    schedule 26.06.2017    source источник
comment
нужно обрабатывать список файлов в цикле   -  person vasilenicusor    schedule 21.07.2017


Ответы (2)


Прошло некоторое время с тех пор, как вы задали этот вопрос, вот мой комментарий на случай, если он все еще может быть вам полезен в будущем.

Во-первых, не совсем понятно, чего вы хотите достичь. Пожалуйста, будьте более информативными и, если возможно, приведите пример.

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

Я рекомендую вам создать командный файл с командами, чтобы сделать каждый файл членом. Вы можете использовать Regex, чтобы сделать это очень быстро и без особых проблем.

Вот пример обновления одной ревизии члена файла:

si updaterevision --hostname=servername --port=portnumber --user=username --changepackageid=5873763:2 --revision=:working myfile_a1.c

куда

servername = имя сервера, на котором находится ваша песочница

portnumber = порт, который обеспечивает доступ к серверу для вашей песочницы

username = ваш логин идентификатор пользователя

changepackageid = здесь вы меняете номер, чтобы использовать вашу определенную ЗАДАЧУ: ChangePackage для этих изменений

revision = если у вас есть рабочая ревизия, к которой вы хотите присоединиться, просто используйте слово «рабочая» в качестве ревизии, в противном случае вы можете указать конкретный номер ревизии, например редакция = 1.2

В конце вы определяете имя файла, который хотите обновить.

Перейдите в корневую папку песочницы, откройте окно CMD и запустите командный файл. Он выполнит каждую строку, применяя ваши изменения.


Если у вас есть список файлов с ревизией, которую вы хотите зарегистрировать, вы можете использовать REGEX, чтобы преобразовать его в пакетный файл.

Пример списка файлов в текстовом файле: file1.c 1.10 file3.c 1.19 sec_file1.c 1.1.2.1 support.h 1.7 Используйте блокнот ++ или другой текстовый редактор с поддержкой регулярных выражений и выполните следующий поиск: Вы можете увидеть регулярное выражение: ([\ w] *. [\ D] *) \ s + ([\ d  .] +). * найдет 2 совпадения в строке: 1) имя файла, 2) версия,

Как только вы узнаете, какое регулярное выражение применяется, теперь вы можете использовать его в блокноте ++, чтобы выполнить простой поиск и заменить:

Поиск = ([\ w] . [\ D]) \ s + ([\ d.] +). *

Заменить = si updaterevision --hostname = servername --port = portnum --user = userid --changepackageid = 6123933: 4 --revision = \ 2 \ 1

\ 1 => Имя файла

\ 2 => Версия файла

См. Изображение ниже в качестве примера:  введите здесь описание изображения

Наконец, просто сохраните документ как командный файл и запустите его.

person jg_dl    schedule 12.12.2017

Просто предположите, что если у вас есть большой список участников вместе с ревизией участника, до которой вы хотите обновить, то у вас также есть песочница, которая служила вам для создания этого списка.

Если это так, мой подход был бы

c: \ MySandbox> si updaterevision --recurse --revision =: работает

Если ваш список членов / ревизий взят из пути разработки, вы можете сначала настроить песочницу, нацеленную на этот путь разработчика, выполнить повторную синхронизацию (закройте песочницу, если она открыта в графическом интерфейсе), перенацелите песочницу на целевой путь разработки (или основную строку), который вы хотите, а затем введите команду выше.

Для подхода с одним членом я бы использовал si rlog для непосредственного создания списка si-команд.

si rlog -R --noheaderformat --notrailerformat --revision=:working --format="si updaterevision {membername} --revision={revision}\r\n" > updaterevs.bat.txt

Просмотрите updaterevs.bat.txt, переименуйте его в updaterevs.bat и выполните его. (Будьте осторожны при использовании в других песочницах)

Другими интересными прочтениями здесь могут быть функция «песочницы для моментальных снимков», контрольные точки в целом и варианты rsp. пути к разработчикам. Использование только этих функций могло бы быть политически более корректным с точки зрения философии честности.

person grenix    schedule 11.06.2019