Python 提交前使用Perforce触发器更新文件

Python 提交前使用Perforce触发器更新文件,python,triggers,perforce,rcs,Python,Triggers,Perforce,Rcs,我知道这个问题本质上已经存在,但这个问题没有明确的答案,所以请容忍我 背景:在我的公司,我们使用Perforce提交编号作为版本控制的一部分。不管这是不是一个正确的方法,事情就是这样。目前,许多开发人员分别提交代码和文档:首先提交代码,然后提交文档,以更新面向客户机的文档,使其具有新版本号。我想简化这个过程 我的想法如下:创建一个Perforce触发器(在服务器端运行),它扫描提交的文档文件(如.txt)以获得唯一的术语(如)####Perforce###CHANGELIST#NUMBER###

我知道这个问题本质上已经存在,但这个问题没有明确的答案,所以请容忍我

背景:在我的公司,我们使用Perforce提交编号作为版本控制的一部分。不管这是不是一个正确的方法,事情就是这样。目前,许多开发人员分别提交代码和文档:首先提交代码,然后提交文档,以更新面向客户机的文档,使其具有新版本号。我想简化这个过程

我的想法如下:创建一个Perforce触发器(在服务器端运行),它扫描提交的文档文件(如
.txt
)以获得唯一的术语(如
)####Perforce###CHANGELIST#NUMBER###ROFL然后将其替换为提交时更改列表的值。我已经知道如何确定这个值。我搞不清楚的是如何或在哪里更新文件

我已经确定,使用
更改内容
触发器(无论是否可能),可以

“在更改列表创建和文件传输之后,但在提交到数据库之前触发”, 这是一条路要走。此时,文件需要存在于服务器上的某个位置。如何从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.
这是用户提交的内容。然后,我希望触发器在提交过程中截取此文件(如上所述,在
更改内容
阶段),并对其进行更改,以便最终存储在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.
  • 是否尝试替换在不同客户端工作区(和不同用户)上编辑的挂起变更列表文件的内容

  • 您试图在文档文件中替换什么类型的信息?例如 这是一个日期、用户名和RCS关键字扩展吗

我想得到更好的澄清,以防有其他方法来做你想做的事情

根据你想要做的事情,你可以考虑搁置()

另外,我可以将您的信息添加到现有的性能增强请求中, 关于在提交之前修改客户端文件的客户端触发器。如果实施,您将收到电子邮件通知。

99w

我还将您添加到现有的可定制RCS关键字增强请求中,以及 使用您提供的示例


除了使用post命令触发器直接编辑归档内容,然后更新数据库中的校验和之外,目前还没有一种方法可以使用自定义编辑的最终变更列表编号更新文件内容。

我在编程早期学到的一件事是尽可能避免中断级别,尤其是不要在中断中做需要资源才能挂起系统的事情。我完全明白,您希望按顺序解析内部标签,但更好的方法可能是在触发期间设置编辑,以便触发后工具可以执行文件修改


如果我看错了,请纠正我,但如果您在提交文件更改的过程中试图进行文件更改,则似乎有点讽刺,或者可能是递归。最好为日志保留第二个更改列表。您始终知道该文件在本地文件空间中的位置。也就是说,ktext文件和$fields可能会有所帮助。

这是一个问题。@SvW我可以在那里重新发布这个问题,但这是关于Performce服务器及其脚本的…@SvW感谢您提供的有用建议!您好@P4Shimada,谢谢您的回复。我已经更新了我的问题,并提供了一个我正在寻找的示例。如果能被添加到增强请求中,我将不胜感激,谢谢。您好@phantom-99w,不客气。感谢您提供更新的示例。此外,我还将您添加到增强请求中,以便客户端触发器修改文件。