最初我试图实现一个定制的基于 python 的 linter 来帮助我进行词法代码分析。这个 linter 要求我指向脚本或代码文件(需要分析)所在的目录。原始代码(需要分析)存在于 perforce 服务器上。
我想要做的是能够获得用户在 perforce 上搁置的所有文件。我如何使用更改列表编号将这些搁置的文件从 perforce 服务器获取到我的本地计算机,我想在基于 python 的应用程序中执行此操作,最好使用 p4python api。
感谢所有帮助。谢谢
最初我试图实现一个定制的基于 python 的 linter 来帮助我进行词法代码分析。这个 linter 要求我指向脚本或代码文件(需要分析)所在的目录。原始代码(需要分析)存在于 perforce 服务器上。
我想要做的是能够获得用户在 perforce 上搁置的所有文件。我如何使用更改列表编号将这些搁置的文件从 perforce 服务器获取到我的本地计算机,我想在基于 python 的应用程序中执行此操作,最好使用 p4python api。
感谢所有帮助。谢谢
从搁置的变更列表中获取文件有两种选择;一种很简单,但需要在服务器上管理更持久的状态,另一种更无状态,但需要在客户端有更多的逻辑。
标准工作流程(即大多数人类 Perforce 用户会做的事情)是将文件搁置到您的客户端工作区中:
p4 unshelve -s CHANGE
搁置的更改列表中的文件将自动同步到您的工作区(根据您的客户端视图)并在您的默认更改列表中打开。这是一个简单的选项,因为您只需运行该命令即可将所有文件放在预定义的本地位置。从那里你可以自由地修改它们,或者提交它们或将它们重新搁置到不同的更改列表(或者如果你修改它以使自己成为所有者,则使用相同的更改列表)。
这要求您已经设置了一个工作区,并且文件尚未在那里打开,因此如果您在脚本中执行此操作,则需要提前使用合适的工作区配置脚本,并且需要以确保它在某个时候提交或恢复更改,或者它需要知道如何通过运行p4 client
、选择唯一的客户端根等来创建自己的工作区。
stateless 选项p4 print
用于获取搁置的变更列表的内容:
p4 print @=CHANGE
这会将文件流式传输到标准输出,并在中间提供库路径的标题。如果您的 linter 可以处理流数据,这可能是一个简单的选择;如果它需要从磁盘读取文件,则必须实现将文件放在合适位置所需的逻辑,并在完成后清理它们。
将上述任何一个转换为 p4python 都非常简单(我会尝试编写一个代码示例,但 p4python 安装程序目前在 Windows 上已损坏,因此我有一段时间无法使用 p4python),但我的建议是首先在测试环境中的终端上熟悉上述命令,以便在脚本中实现该逻辑之前更好地了解接口和工作空间设置、身份验证等方面的要求。