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

时间:2009-03-04 04:45:17

标签: perforce

我已经检查了perforce客户端上的几个文件。 我可以通过命令'p4 opened'获取这些文件的列表 它以// depot / ...形式提供路径 我想知道如何将其转换为本地路径上的路径(我的意思是客户端路径) 这样我就可以创建一个批处理文件来备份那一天结束前的那些文件 提前致谢 乌代

9 个答案:

答案 0 :(得分:5)

您可以使用p4 where将depot文件规范转换为本地文件规范。

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

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

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

答案 1 :(得分:4)

您还可能需要考虑为什么您觉得需要在使用Perforce本身的每天结束时备份文件。

您可能会发现使用开发分支并在每天结束时提交更改(选中“重新打开以进行编辑”标记)实际上更容易,更好。首先,您使用Perforce来跟踪您的更改,而不是您自己的手动系统。

使用开发分支意味着您可以执行这些签入,而不会弄乱您的同事。

只是一个值得考虑的建议,就是这样。

答案 2 :(得分:4)

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

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

答案 3 :(得分:2)

p4 where filename

这是您正在寻找的命令。

它将列出本地文件系统上的文件库路径,客户端路径和绝对路径。只需将输出传输到cut并选择绝对路径并将其复制过来。

答案 4 :(得分:1)

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

我不知道如何在批处理文件中获得该程序。

答案 5 :(得分:1)

以下BAT脚本从待处理的更改列表中复制perforce打开的文件 (%1命令行参数)

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


:add-to-zip
for / F“tokens = 3”%% j IN('p4 where%1')做zip [zip-file-name] %% j

答案 6 :(得分:1)

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

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

仅供参考,截至2012年/ 2013年,您最好使用Perforce的搁置功能进行日常备份操作。您团队中的其他用户也可以访问这些货架。以这种方式使用它进行备份可以防止您的历史记录被您不太关心的中间文件变体(或其中一部分不适合签入)污染。