0

有没有办法通过命令行更新大量文件的成员修订?

我不能使用:working:head必须为每个文件指定不同的修订版。

据我所知--selectionFile,仅将路径作为输入,而不是修订号。

编辑:我想为成员设置一个非常大的文件列表,并且我想避免si updaterevision ...为每个文件编写命令,因为完成这么多文件需要很长时间。相反,我想知道是否有更高级的方法来指定文件列表及其修订版,:working以便对整个文件列表只运行一次 updaterevision (就像它一样)。

但正如评论中所说,没有这种可能性。

编辑2:我使用 MKS 已有几年了,据我所知,没有这种可能性(至少在 MKS 11.6 之前)通过一个命令行调用将许多文件更新为不同的版本。但是,正如建议的那样,每个成员使用一个调用,使整个操作需要几个小时,因为我在沙箱中有成千上万的成员,而 MKS 需要一些时间来完成每个si命令。

4

2 回答 2

1

只是推测,如果您有大量成员以及要更新到的成员修订版,那么您还有一个沙箱可以为您生成此列表。

如果是这样,我的方法是

c:\MySandbox> si updaterevision --recurse --revision=:working

如果您的成员/修订列表来自开发路径,您可以首先拥有一个针对该开发路径的沙箱,重新同步(如果在 gui 中打开,请关闭沙箱),将沙箱重新定位到您想要的目标开发路径(或主线),然后发出命令以上。

对于单一成员方法,我将使用“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。开发路径。 在诚信哲学中,仅使用这些功能在政治上可能更正确。

于 2019-06-11T14:44:04.477 回答
1

自从您提出这个问题以来已经过去了一段时间,这是我的评论,以防将来对您仍然有用。

首先,您想要实现的目标并不完全清楚。请更具描述性,并尽可能提供示例。

我现在所理解的是,您需要通过命令行设置列出为成员修订版的一堆文件。这相当简单,最复杂的实际上是拥有要更新为成员的文件列表以及要设置为成员的修订版本。

我建议您使用命令创建一个批处理文件以使每个文件成员。您可以使用 Regex 非常快速且没有太多麻烦地做到这一点。

以下是更新一个文件成员修订的示例:

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

在哪里

servername = 沙箱所在服务器的名称

portnumber = 为您的沙箱提供访问服务器的端口

用户名 = 您的登录用户 ID

changepackageid = 在这里您更改数字以使用您定义的 TASK:ChangePackage 进行此更改

revision = 如果您现在有一个工作版本,您现在想成为会员,只需使用“working”作为修订,否则您可以定义特定的修订号,例如 revision=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.]+).* 每行将找到 2 个匹配项:1)文件名,2)修订,

一旦你知道哪个正则表达式适用,你现在可以在记事本++中使用它来进行简单的搜索和替换:

搜索 = ([\w] .[\D] )\s+([\d.]+).*

替换 = si updaterevision --hostname=servername --port=portnum --user=userid --changepackageid=6123933:4 --revision=\2 \1

\1 => 文件名

\2 => 文件修订

请参阅下图作为示例: 在此处输入图像描述

最后只需将 doc 保存为批处理文件并运行它。

于 2017-12-12T17:25:45.927 回答