【问题标题】:Perforce save a local copy of opened filePerforce 保存打开文件的本地副本
【发布时间】:2014-07-01 04:04:31
【问题描述】:

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

【问题讨论】:

标签: perforce


【解决方案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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 要记住的一点是 p4 where 只会报告文件的位置。它不检查它是否存在。
    • @Jonathon:好点。即使它存在于 depot 上,也可能不会同步到客户端。
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 根据我的经验,在 perforce 之外在本地维护您自己的提交间备份比尝试维护分支更快且风险更小。
    • 这绝对是使用 perforce 的正确方法 - 不幸的是,根据我的经验,大多数开发人员似乎太懒了(也许很忙),无法正确地学习如何做到这一点。
    【解决方案4】:
    p4 where filename
    

    这是您要查找的命令。

    它会列出本地文件系统上文件的depot路径、客户端路径和绝对路径。只需将输出通过管道传输到cut 并选择绝对路径并将它们复制过来。

    【讨论】:

    • 提到的 OP 使用了一个暗示 Windows 的批处理文件。 cut 命令可能不可用。
    【解决方案5】:

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

    for /F "tokens=1,5,6 delims=#" %%a IN ('p4 打开') for /F "tokens=3" %%j IN ('p4 where %%a') 做 zip % %b%%c %%j

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

    【讨论】:

      【解决方案6】:

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

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

      【讨论】:

        【解决方案7】:

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

        p4 打开 -c %1 > 打开-%1.txt
        对于 /F "tokens=1 delims=#" %%i IN (open-%1.txt) 调用 :add-to-zip %%i

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

            【讨论】:

            • 你好..你可以在正确答案评论中提到这一点。 :)
            猜你喜欢
            • 1970-01-01
            • 2015-07-16
            • 2011-05-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多