Perforce链接文件

时间:2014-02-06 18:14:34

标签: java perforce

我有两个项目A和B. 我在A中有文件constants.java。我想在B.such中保留它的镜像副本,当A中的constants.java在B中自动更改时。 Perforce中是否有任何锻炼。提前感谢帮助我

4 个答案:

答案 0 :(得分:1)

您无法使用Perforce自动执行此操作,但您可以轻松设置cron作业(如果您有Jenkins之类的CI系统,则可以设置构建作业)以使用p4 integrate命令将A中的任何更改合并到B中。

答案 1 :(得分:1)

可以使用change-commit trigger执行此操作,在提交A时从A到B进行集成,但这似乎是一个糟糕的想法,特别是因为Perforce称之为出:

  

使用触发器脚本时,请记住Perforce命令   将数据写入仓库是危险的,应该避免。在   特别是,不要在触发器中运行p4 submit命令   脚本。

为什么不让这些项目都引用相同的constants.java文件?

答案 2 :(得分:0)

你可能想要一些像SVN的svn:externals一样的东西。

我认为Perforce最接近的是使用符号链接,这是一个非常糟糕的替代品。您可以检查Perforce中的符号链接,它将理解该链接。如果你有

/root
   /project-A
      file1
   /project-B
      link-to-file1

你希望在项目B上工作,你需要检查一切。 Perforce并没有让符号链接对你透明,它只是复制它。它也可能是仅限Unix的功能。

答案 3 :(得分:0)

在perforce中,您可以通过clientview定义工作区(也称为客户端)的设置。 每个工作空间/客户端都有一个从depot-path到workspace-path的映射列表。 您可以致电p4 client查看/编辑它。 根据您的情况,您只需向project-b客户端添加一个映射,类似于:

//depot/project-a/files/constant.java //project-b-client/files/constant.java

这很容易,你有你想要的东西。

BUT:
在实践中,如果有几个人正在从事项目-a和项目-b,那么就会导致一些问题:   - 在适当的工作环境中,每个人都应该拥有不同的工作空间/客户。因此,每个人都需要做这个改变。只有时间才能忘记它或者做错了   - 必须使用它但不熟悉perforce的开发人员如果在其中一个项目中更改“constant.java”,则不会想到对其他项目的影响。
  - 想象一下你想在其中一个项目上使用codefreeze(例如用于测试目的)。如果其他项目仍想改变“constant.java”怎么办?

这种方法可能会有更多麻烦。 我建议将文件从a集成到b,反之亦然,或者(在更复杂的环境中)将文件(可能不仅是源文件,还有jar或更大的lib)放入工件库中。然后项目从那里(通过依赖管理器)获得它。例如,请参阅ivymavengradle

这些替代方案肯定要多得多,但在一个稍微复杂的软件项目中,它们绝对值得。