Perforce允许人们签入未更改的文件.为什么任何版本控制系统都允许这种情况超出我的意见,但这是另一个问题的主题.我想创建一个拒绝提交未更改文件的触发器.但是,我没有使用Perforce触发器的经验.根据我的阅读,我猜这将是一个"更改内容"触发器,因为提交的文件必须与他们即将替换的相应头版本进行区分.我需要迭代传入的文件,并确保它们确实已经发生了变化.问题是,我不知道如何去做.
拥有Perforce触发体验的任何人都能提供一个例子,或者至少指出我正确的方向吗?
在最新版本的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以及其他可能的变量,这样您就可以将昂贵的操作限制为只有问题的用户.
如果您查看 Perforce 中的触发器表,您会发现触发器只不过是在发生某种事件时调用的脚本。在您的情况下,将触发更改内容事件。
您有多种选择来编写与 Perforce 交互的脚本。Perforce下载页面包含许多广泛使用的语言的库和模块。所有这些都会对您有所帮助,并大大简化您需要做的事情。另外,请检查Perforce 文档页面并下载管理员指南。它将解释如何创建触发器等。
基本上,您需要编写一个脚本,该脚本将从正在提交的更改列表中获取信息,并针对其中的每个文件对服务器运行“diff”命令。如果发现文件没有变化,则需要使提交失效。
您最喜欢的语言的 Perforce 模块和管理员指南将为您提供所需的所有答案。