【发布时间】:2014-07-31 19:04:07
【问题描述】:
我知道这个问题本质上已经有been asked,但是这个问题没有明确的答案,所以请多多包涵。
背景:在我的公司,我们使用 Perforce 提交编号作为我们版本控制的一部分。不管这是否是正确的方法,事情就是这样。目前,许多开发人员分别提交代码和文档:首先是代码,然后是文档,以使用新版本号更新面向客户的文档。我想简化这个过程。
我的想法如下:创建一个 Perforce 触发器(在服务器端运行),它会扫描提交的文档文件(例如 .txt)以查找唯一术语(例如 #####PERFORCE##CHANGELIST##NUMBER###ROFL###LOL###WHATEVER#####),然后将其替换为提交时更改列表的值。 我已经知道如何确定这个值。我不知道如何或在哪里更新文件。
我已经确定使用change-content 触发器(无论是否可能),这
“在更改列表创建和文件传输之后,但在提交到数据库之前触发[s]”,
是要走的路。此时文件需要存在于服务器上的某处。如何从 Python 脚本中确定这些文件的(临时?)位置,以便我可以更新或 sed 将占位符值替换为预期值?到目前为止,我发现的 Perforce 在线文档并没有非常明确地说明这是否可行,或者在这个阶段提交的机制如何工作。
编辑
基本上我正在寻找的是类似 RCS 的功能,但没有伴随它的难看的特殊字符序列。经过更多挖掘,我的要求与this question 相同。但是我相信这一定是可能的,因为触发器在服务器端运行,并且文件已经传输到服务器。因此,它们必须可由脚本访问。
示例
考虑发行说明文档中的以下 sn-p:
[#####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.
【问题讨论】:
-
这是Stack Overflow的问题。
-
@SvW 我可以在那里重新发布问题,但这是关于 Perforce 服务器 和在其上发生的脚本...
-
@SvW 感谢您的有用建议!
标签: python triggers perforce rcs