gpt4 book ai didi

java - Mercurial 和 Java 项目的一种持续集成工作流程

转载 作者:行者123 更新时间:2023-12-01 19:26:31 24 4
gpt4 key购买 nike

我工作的地方有一个 Java 项目。

要在 Mercurial 中创建该项目,我知道我必须为所有类创建一个存储库。

由于有很多类,我想我是否可以拥有一个由存储库副本加上我必须做的修改组成的 jar 副本。

因此,用 Mercurial 术语来说:

  1. 包含所有类的主存储库
  2. 一个经过修改和新类的小型存储库

我想从 B 存储库 merge 到 A 存储库。然后我只想提取和更新 B 存储库中存在的类 (*.java)。

我尝试过,但没有成功:

  1. 为了创建 B 存储库,我克隆了 A 存储库并我删除了所有文件。
  2. 当我必须修改 .java 时,我会执行特定文件的 wget我本地的 Mercurial 服务器机器。当文件是新的时我只是运行 hg add。
  3. 要进行提交,我会执行 hg commit -I
    file1 -i file2 ... -i fileN
    对于所有工作中存在的文件B 存储库的文件夹。

然后是不成功的部分:

  1. 我无法仅对以下内容进行 hg 更新现有文件。
  2. 当 B 存储库 merge 到 A 存储库时一切都好。但我无法运行 hg使用 -I 提交 merge 状态范围。要么全有,要么全无。
  3. 当我从 A 存储库中提取数据并尝试更新我有同样的问题4。

我知道 hg pull -f 从 B 存储库的不相关存储库开始,而不是克隆。但它也有同样的更新问题。而且看起来很丑。

我认为transplant plugin这可能有帮助。我也读过这个How to combine two projects in Mercurial? .

保留 A Repo 中的文件历史记录是必须的,即使该历史记录是在 B Repo 中生成的。

您知道实现这一目标的最佳方法吗?

谢谢

最佳答案

您要查找的内容称为 Partial Clone Mercurial 不支持它。

老实说,您的工作流程听起来相当糟糕 - 创建子集存储库并尝试使其保持同步与工具的使用方式相悖。为什么不直接从完整的存储库构建您需要的 jar,而只包含 ant 中的特定类(我希望)<jar>标签。我们有一个包含数千个类的存储库和 build all输出许多不同的 jar,每个 jar 都是整个类的子集。

也就是说,如果您必须坚持当前的工作流程,则应该对其进行修改。不要克隆完整的存储库,然后删除不需要的文件,因为您仍然包含它们的完整历史记录。

相反,请使用 hg convert ( Convert Extension )使用 filemap 构建您的子集存储库和 --filemap选项。使用 hg 的源存储库类型目的地类型为 hg您可以使用文件映射仅包含您想要的文件。您最终得到的不是克隆,而是一个全新的存储库,其中包含所有原始变更集,但仅适用于您指定的文件。使用convert的内置增量模式可以只转换来自完整存储库的新更改,作为一种更新。

关于java - Mercurial 和 Java 项目的一种持续集成工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/502064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com