我已经检查了 perforce 客户端上的几个文件。我可以通过命令'p4 opens'获取这些文件的列表它以 //depot/... 的形式给出路径,就像我想知道如何将其转换为本地路径上的路径(我的意思是客户端路径)这样我就可以在一天结束之前创建一个批处理文件来备份那些提前谢谢 Uday
9 回答
此批处理脚本可以将文件压缩到单独的更改列表中。
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
您可以使用p4 where
将仓库文件规范转换为本地文件规范。
要解析p4 where
Windows 批处理文件的输出,类似以下内容可能会有所帮助:
for /f "tokens=3" %%i in ('p4 where %my_depot_filespec%') do echo %%i
p4 where
请注意,对于更复杂的映射,例如文档中描述的映射,for 循环的主体可能会执行多次。如果您需要处理这些,您可能需要进行更复杂的解析。
您可能还想考虑为什么您觉得除了使用 Perforce 本身之外,还需要在每天结束时备份文件。
您可能会发现在每天结束时使用开发分支并提交更改(选中“重新打开以进行编辑”标记)实际上更容易更好。首先,您使用 Perforce 来跟踪您的更改,而不是您自己的手动系统。
使用开发分支意味着您可以进行这些签入,而不会有弄乱同事的风险。
只是一个值得考虑的建议,仅此而已。
p4 where filename
这是您要查找的命令。
它将列出本地文件系统上文件的 depot 路径、客户端路径和绝对路径。只需将输出输入cut
并选择绝对路径并将它们复制过来。
此批处理脚本可以将文件压缩到单独的更改列表中。
for /F "tokens=1,5,6 delims=#" %%a IN ('p4 打开') for /F "tokens=3" %%j IN ('p4 where %%a') 做 zip % %b%%c %%j
它将创建如下文件:
change571620.zip
change673450.zip
change723098.zip
defaultchange.zip
检查您的 p4 客户端,因为您已经定义了 //depot 到文件系统路径的映射。替换 //depot 以获取文件的本地路径,以便您可以备份。
我不知道如何在批处理文件中以编程方式获取它。
以下 BAT 脚本从挂起的更改列表(%1 命令行参数)复制 perforce 打开的文件
p4 opens -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') do zip [zip-file-name ] %%j
仅供参考,从 v2012/2013 开始,您最好使用 Perforce 的搁置功能进行日常备份操作。然后,您团队中的其他用户也可以访问这些书架。以这种方式使用它进行备份可以防止您的历史记录被您并不真正关心的中间文件变体污染(或其中部分不适合签入)。
非常感谢 :-) 只是在搜索可以为我提供打开文件的客户端路径的命令,原因与备份文件的原因相同。不仅我得到了命令,还有脚本:-)