gpt4 book ai didi

version-control - 来自外部存储库的 Mercurial "vendor branches"?

转载 作者:行者123 更新时间:2023-12-04 21:24:56 25 4
gpt4 key购买 nike

我想在 Mercurial 中存储一个项目,其中包含来自 Git 和 SVN 存储库的外部代码(可以由我修改)。在 SVN 中,我会用 vendor branches 解决这个问题并复制代码,但我明白在 Mercurial it's better to have different repositories for different projects 中,并在需要时在它们之间拉动。

项目布局将是这样的:

- externalLibraryA [来自 SVN 存储库]
- ...我提供了一些额外的文件
- externalLibraryB [来自 SVN 存储库]
- ...我提供了一些额外的文件
- externalPluginForExternalLibraryB [来自 Git 仓库]

在 Subversion 中,我会创建 vendor目录和 trunk dir,首先复制所有外部库 vendor ,然后在 trunk 中的正确位置. (我认为)我也可以在 Mercurial 中做到这一点,使用 subrepositories ,但这是最好的方法吗?

我尝试为外部库设置不同的存储库,但似乎无法拉出 externalLibraryARepoexternalLibraryA我的主存储库的目录?它进入主目录,这不是我想要的。我还可以创建一个 Mercurial 镜像存储库并将其作为子存储库包含在我的主存储库中,但是此子目录中的更改将转到镜像存储库,而我希望它们保留在主存储库中。

最佳答案

我可能只是将它存储在一个存储库中 - 请注意,在您提供的链接中,他们最终使用他们的构建系统将来自不同存储库的二进制输出组合在一起。我不清楚他们在那里的理由。

如果您试图解决的根本问题是如何以干净的方式更新外部,我可能会使用 anonymous branching为了那个原因。

IE。将外部库添加到您的项目中,并进行修改。确保它有效。使用 ExternalA-v1.0 标记。干掉你的实际项目。现在 ExternalA, Inc. 有他们的东西的新版本。将您的存储库更新为 ExternalA-v1.0 标签。导入他们的新版本并在顶部应用您的修改。犯罪。现在您有两个头:一个是最新版本的代码(适用于 ExternalA-v1.0),另一个是最新版本的 ExternalA(可能不适用于您的代码)。因此,您将两者 merge 并调和。再次标记,现在使用 ExternalA-v2.0。根据需要重复。

您仍然可以将外部存储库保存在单独的存储库中,但我认为使用这些存储库的项目不需要一直保持最新的更改 - 看起来供应商分支的全部意义在于有一些隔离点受抚养人和受抚养人之间。当然,将更改从 externalA 项目移动到正在使用的项目将是一个手动的事情(嗯,一个副本,真的很像在 SVN 中)。

关于version-control - 来自外部存储库的 Mercurial "vendor branches"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5298127/

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