Perforce触发器拒绝提交未更改的文件?

rav*_*ven 7 perforce triggers

Perforce允许人们签入未更改的文件.为什么任何版本控制系统都允许这种情况超出我的意见,但这是另一个问题的主题.我想创建一个拒绝提交未更改文件的触发器.但是,我没有使用Perforce触发器的经验.根据我的阅读,我猜这将是一个"更改内容"触发器,因为提交的文件必须与他们即将替换的相应头版本进行区分.我需要迭代传入的文件,并确保它们确实已经发生了变化.问题是,我不知道如何去做.

拥有Perforce触发体验的任何人都能提供一个例子,或者至少指出我正确的方向吗?

Dou*_*der 5

在最新版本的perforce中,允许客户端设置阻止提交未更改的文件:

    SubmitOptions:  Flags to change submit behaviour.

            submitunchanged           All open files are submitted
            submitunchanged+reopen    (default).

            revertunchanged           Files that have content or type
            revertunchanged+reopen    changes are submitted. Unchanged
                                      files are reverted.

            leaveunchanged            Files that have content or type
            leaveunchanged+reopen     changes are submitted. Unchanged
                                      files are moved to the default
                                      changelist.

                          +reopen     appended to the submit option flag
                                      will cause submitted files to be
                                      reopened on the default changelist.
Run Code Online (Sandbox Code Playgroud)

这可能是调查用户是否因为冷漠而仅检查未更改文件的途径.

编辑:

鉴于您想要强制执行限制而不管用户的工作区设置如何,那么您将需要其他答案中建议的触发器.

您需要查看Perforce的文档以确定详细信息,但您需要更改内容触发器.

您可能希望传入%user%以及%change%plus以及其他可能的变量,这样您就可以将昂贵的操作限制为只有问题的用户.


Cur*_*rro 1

如果您查看 Perforce 中的触发器表,您会发现触发器只不过是在发生某种事件时调用的脚本。在您的情况下,将触发更改内容事件。

您有多种选择来编写与 Perforce 交互的脚本。Perforce下载页面包含许多广泛使用的语言的库和模块。所有这些都会对您有所帮助,并大大简化您需要做的事情。另外,请检查Perforce 文档页面并下载管理员指南。它将解释如何创建触发器等。

基本上,您需要编写一个脚本,该脚本将从正在提交的更改列表中获取信息,并针对其中的每个文件对服务器运行“diff”命令。如果发现文件没有变化,则需要使提交失效。

您最喜欢的语言的 Perforce 模块和管理员指南将为您提供所需的所有答案。