【问题标题】:Use perforce to capture current state of external directory使用 perforce 捕获外部目录的当前状态
【发布时间】:2010-08-30 18:41:14
【问题描述】:

我在存储库之外有一个目录。我把生成的资源放在那里。这些生成的源需要永远创建。我不想让团队中的每个人都生成这些源代码,而是想使用我们的构建机器来生成源代码,并将它们签入以执行。我该如何做到这一点并确保源代码控制目录仅包含最新的文件,而不是之前生成但不是在最新版本中生成的任何文件?

我正在考虑对生成目录中的所有文件(对于现有文件)执行p4 edit,然后使用通配符执行p4 add 以获取任何新文件,但我不知道如何处理之前生成的文件,但在最近的版本中没有生成(应该删除)。

【问题讨论】:

    标签: code-generation perforce


    【解决方案1】:

    按照您的建议开始 - p4 edit 和 p4 add 以捕获所有更改,然后调用

    p4 revert -a
    

    这将还原软件仓库中任何已打开以供编辑但实际上未更改或丢失的文件。

    【讨论】:

    • 是的,我也必须这样做。但这并不能解决问题。在生成器创建文件并将其提交到更改列表 1 中的情况下,但在更改列表 2 中它不会再次生成它,因为它不需要或错误。在这种情况下,我也需要从源代码管理中删除它。
    【解决方案2】:

    我在 perforce 博客上找到了这个,这正是我想要的。 Automating folder replacement using P4Java and Apache Ant

    【讨论】:

      【解决方案3】:

      一个想法是在构建之前手动删除该区域中的所有内容(不是通过 Perforce,而是通过操作系统)。完成构建后,执行“协调离线工作”。这将在 Perforce 中通过添加新文件、删除不再存在的文件以及编辑已更改的文件来协调您在该区域中的内容。

      您可以通过 P4V 协调离线工作,如 here. 所示,在您的工作区浏览器中,右键单击文件夹并选择“协调离线工作”。

      或者,如果您喜欢更自动化的解决方案,您可以通过命令行进行操作,如 here. 所示(注意:此链接还讨论了通过 p4v 进行协调,但这已被上一个链接所取代)

      p4 diff -se //myclient/... | p4 -x - edit
      

      签出更改的文件。

      p4 diff -sd //myclient/... | p4 -x - delete
      

      删除文件。

      find . -type f -print | p4 -x - add
      find . -type l -print | p4 -x - add
      

      在 Unix 中添加文件和符号链接,或

      dir /s /b /a-d | p4 -x - add
      

      在 Windows 中添加文件。

      【讨论】:

        【解决方案4】:

        对于 Perforce 中的二进制文件,您可以设置一个 FileType 标志,该标志仅存储存储库中文件的 1 个(或一组数量)的修订版本。这样,您将拥有文件的历史记录,但您的其他用户只能访问该文件的最新版本的二进制文件,并且您的服务器将只存储一个副本,如果您不需要存储多个副本,则存储效率会更高.

        进行更改。

        1. 将您感兴趣的文件添加到存储库中。
        2. 签出文件。
        3. 在 P4V 中右键单击并选择更改文件类型
        4. 在弹出的对话框中选择屏幕底部的+S“服务器限制存储的修订数量”,这将限制存储的文件数量。

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多