有没有办法通过命令行更新大型文件列表的成员版本?
我无法使用:working
或:head
,但必须为每个文件指定不同的修订版。
据我所知--selectionFile
仅将路径作为输入,而不是修订号。
编辑:我想为成员设置一个非常大的文件列表,我想避免为每个文件编写命令si updaterevision ...
,因为这个文件需要很长时间才能完成。相反,我想知道是否有更高级的方法来指定文件列表及其修订版,以便能够对整个文件列表运行一次updaterevision(就像:working
一样)。
但正如评论中所说,没有这种可能性。
答案 0 :(得分:1)
自从你提出这个问题以来已经过了一段时间,这是我的意见,以防将来对你有用。
首先,您想要实现的目标并不完全清楚。请更具描述性,如果可能,请提供示例。
我现在理解的是,您需要通过命令行设置列为成员修订的一堆文件。这很简单,最复杂的是将要更新的文件列表更新为成员以及要设置为成员的修订。
我建议您使用命令创建批处理文件以生成每个文件成员。您可以使用正则表达式快速完成并且没有太多麻烦。
以下是更新一个文件成员修订版的示例:
si updaterevision --hostname=servername --port=portnumber --user=username --changepackageid=5873763:2 --revision=:working myfile_a1.c
其中
servername =沙箱所在服务器的名称
portnumber =提供沙箱服务器访问权限的端口
username =您的登录用户ID
changepackageid =在这里您更改了使用您定义的任务的数字:ChangePackage用于此更改
revision =如果你有一个你想要成为会员的工作版,只需使用" working"作为修订,否则您可以定义特定的修订号,例如修订= 1.2
最后,您可以定义要更新的文件的名称。
转到沙箱根文件夹,打开CMD窗口,然后运行批处理文件。它将执行应用您的更改的每一行。
如果您有一个包含所需修订版本的文件列表,则可以使用REGEX将其转换为批处理文件。
文本文件中的文件示例列表:
file1.c 1.10
file3.c 1.19
sec_file1.c 1.1.2.1
support.h 1.7
使用带有正则表达式支持的notepad ++或其他文本编辑器并运行此搜索:
一旦你知道哪个正则表达式适用,你现在可以在记事本++中使用它来做一个简单的搜索和替换:
搜索=([\ w] 。[\ D] )\ s +([\ d。] +)。*
替换= si updaterevision --hostname = servername --port = portnum --user = userid --changepackageid = 6123933:4 --revision = \ 2 \ 1
\ 1 =>文件名
\ 2 =>文件修订
最后只需将doc保存为批处理文件并运行它。
答案 1 :(得分:0)
只需推测一下,如果您有大量的成员列表以及要更新到的成员修订版本,那么您还有一个沙箱可用来生成此列表。
如果是这样,我的方法将会是
c:\ MySandbox> si updaterevision --recurse --revision =:正在工作
如果您的成员/修订版列表来自开发路径,则可以首先具有一个针对该devpath的沙箱,然后重新同步(如果在gui中打开,则关闭thesandbox),将沙箱重新定位到所需的目标devpath(或主线),然后发出上面的命令。
对于单成员方法,我将使用“ 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。 devpaths。 在诚信哲学上,仅使用这些功能在政治上可能更正确。