Perforce保存已打开文件的本地副本

Perforce保存已打开文件的本地副本,perforce,Perforce,我在perforce客户端上签出了一些文件。 我可以通过命令“p4 opened”获取这些文件的列表 它以//depot/…的形式给出路径。。。喜欢 我想知道如何将其转换为本地路径上的路径(我指的是客户端路径) 这样我就可以在一天结束前创建一个批处理文件来备份这些文件 提前谢谢 Uday检查您的p4客户机,因为您已经为//depot定义了到文件系统路径的映射。将//depot替换为该文件,以获取文件的本地路径,以便进行备份 我不知道如何在批处理文件中以编程的方式获得它 p4 where file

我在perforce客户端上签出了一些文件。 我可以通过命令“p4 opened”获取这些文件的列表 它以//depot/…的形式给出路径。。。喜欢 我想知道如何将其转换为本地路径上的路径(我指的是客户端路径) 这样我就可以在一天结束前创建一个批处理文件来备份这些文件 提前谢谢
Uday

检查您的p4客户机,因为您已经为//depot定义了到文件系统路径的映射。将//depot替换为该文件,以获取文件的本地路径,以便进行备份

我不知道如何在批处理文件中以编程的方式获得它

p4 where filename
这是您要查找的命令

它将列出本地文件系统上文件的仓库路径、客户端路径和绝对路径。只需将输出导入
cut
,然后选择绝对路径并将它们复制过来。

您可以使用它将仓库文件规范转换为本地文件规范

要从Windows批处理文件中解析
p4 where
的输出,以下内容可能会有所帮助:

for /f "tokens=3" %%i in ('p4 where %my_depot_filespec%') do echo %%i

请注意,for循环的主体可能会对更复杂的映射执行多次,例如
p4 where
文档中描述的映射。如果你需要处理这些问题,你可能需要做更复杂的解析。

你也可能想知道为什么你每天都需要备份文件。 您可能会发现,使用开发分支并在每天结束时提交更改(选中“重新打开以进行编辑”标志)实际上更简单、更好。首先,您要使用Perforce来跟踪您的更改,而不是您自己的手动系统

使用开发分支意味着您可以在不影响同事的情况下进行这些签入


这只是一个值得考虑的建议,仅此而已。

下面的BAT脚本从挂起的变更列表复制Performce open文件
(%1命令行参数)

p4已打开-c%1>打开-%1.txt
对于/F“tokens=1 delims=#”%%i IN(open-%1.txt)do call:add to zip%%i

:添加到zip

对于('p4,其中%1')中的/F“tokens=3”%%j,do zip[zip file name]%j

非常感谢:-)正在搜索命令,该命令可以为我提供打开文件的客户端路径,原因与备份文件完全相同。不仅我得到了命令,还有脚本:-)

此批处理脚本可以将文件压缩到单个更改列表中

for /F "tokens=1,5,6 delims=# " %%a IN ('p4 opened') do for /F "tokens=3" %%j IN ('p4 where %%a') do zip %%b%%c %%j
它将创建如下文件:

change571620.zip
change673450.zip
change723098.zip
defaultchange.zip

此批处理脚本可以将文件压缩到单个更改列表中。

对于/F“代币=1,5,6 delims=#”%%a IN('p4已打开'),对于/F“代币=3%%%j IN('p4其中%%a')do zip%%b%%c%%j

它将创建如下文件:
更改571620.zip
更改673450.zip
更改723098.zip

defaultchange.zip供参考,从2012/2013年起,您最好使用Performance的搁置功能进行日常备份操作。您团队中的其他用户也可以访问这些工具架。以这种方式使用它进行备份可以防止您的历史记录被您并不真正关心的中间文件变体(或不适合签入的部分文件)所污染。

需要记住的一点是,p4 where只报告文件的位置。它不会检查它是否存在。@Jonathon:说得好。即使它存在于仓库中,也可能无法与客户端同步。您可能想检查一下这个问题:上面提到的OP使用了一个批处理文件,这意味着Windows。cut命令可能不可用。根据我的经验,在perforce外部本地维护您自己的inter-submit备份比尝试维护分支更快,风险更小。这绝对是使用perforce的正确方法-不幸的是,根据我的经验,大多数开发人员似乎太懒了(可能很忙)来学习如何正确地执行此操作。您好。。你本可以在正确的回答中提到这一点(评论:)