我知道这个问题本质上已经被问过了,但是这个问题没有明确的答案,所以请多多包涵。
背景:在我的公司,我们使用 Perforce 提交编号作为我们版本控制的一部分。不管这是否是正确的方法,事情就是这样。目前,许多开发人员分别提交代码和文档:首先是代码,然后是文档,以使用新版本号更新面向客户的文档。我想简化这个过程。
我的想法如下:创建一个 Perforce 触发器(在服务器端运行),它扫描提交的文档文件(例如.txt
)以查找唯一术语(例如#####PERFORCE##CHANGELIST##NUMBER###ROFL###LOL###WHATEVER#####
),然后将其替换为更改列表的值提交时。 我已经知道如何确定这个值。 我无法弄清楚的是如何或在何处更新文件。
我已经确定使用change-content
触发器(无论是否可能),它
“在更改列表创建和文件传输之后,但在提交提交到数据库之前触发[s]”,
是要走的路。此时文件需要存在于服务器上的某个位置。如何从 Python 脚本中确定这些文件的(临时?)位置,以便我可以sed
用预期值更新或替换占位符值?到目前为止,我发现的 Perforce 在线文档并没有非常明确地说明这是否可行,或者在这个阶段提交的机制如何工作。
编辑
基本上我正在寻找的是类似 RCS 的功能,但没有伴随它的难看的特殊字符序列。经过更多的挖掘,我所问的与这个问题相同。但是我相信这一定是可能的,因为触发器正在服务器端运行,并且文件已经传输到服务器。因此,它们必须可由脚本访问。
例子
考虑发行说明文档中的以下片段:
[#####PERFORCE##CHANGELIST##NUMBER###ROFL###LOL###WHATEVER#####] Added a cool new feature. Early retirement is in sight.
[52702] Fixed a really annoying bug. Many lives saved.
[52686] Fixed an annoying bug.
这是用户提交的内容。然后,我希望触发器在提交过程中拦截该文件(如前所述change-content
)并对其进行更改,以便最终存储在 Perforce 中的内容如下所示:
[52738] Added a cool new feature. Early retirement is in sight.
[52702] Fixed a really annoying bug. Many lives saved.
[52686] Fixed an annoying bug.
其中52738是用户提交的最终更改列表编号。(如前所述,我已经可以确定这个数字,所以请详细说明这一点。)即,用户在 Perforce 客户端控制台上看到的是什么。
Changelist 52733 renamed 52738.
Submitted change 52738.