gpt4 book ai didi

git - 我如何使用 hg-git 关联现有的 Mercurial 和 git 存储库?

转载 作者:IT王子 更新时间:2023-10-29 01:26:15 24 4
gpt4 key购买 nike

这是一个非常深奥的问题,所以从一开始就在这里澄清一下:我不是在谈论从 svn 到 git、git 到 mercurial 或 mercurial 到 git 的转换。我说的是一种复杂的情况,这种情况是由利用“跨系统”插件引起的,这些插件允许 Mercurial 在某种程度上与 git 和 SVN 进行互操作。

一段时间以来,我一直使用 Mercurial 的 hg-subversion 插件来“跟踪”code.google.com 上的上游 SVN 存储库。多亏了这个插件,Mercurial 认为存储库是“相关的”,并且能够只提取自从我上次从存储库中提取以来发生的更改。这允许我维护我自己的私有(private) Mercurial 存储库,其中包括私有(private)变更集、分支、标签等,但它会定期同步并与上游 SVN 存储库中发生的更改 merge 。

上游存储库已经从 SVN 干净地移动到 git。当我说得很干净时,我的意思是他们带走了整个提交树,或者至少是影响我关心的默认/主分支的部分。

我现在的情况是,我有一个最新的 Mercurial 存储库,该存储库与现在已不存在的 SVN 存储库中的最后一次 checkin merge ,我想开始从新的上游 git 存储库中提取更改,从 svn 存储库移动到 github 之后发生的变化开始。

我可以使用很棒的 hg-git 插件从这个存储库中 pull 更改,但是由于当前存储库没有与 git upstream 存储库“相关”的概念,它会 pull 所有更改,包括其镜像的所有更改-图像变更集已经存在于我的存储库中。

所以我正在寻找的是有关如何通过 hg-git 使我的 Mercurial 存储库考虑自身与上游 git 存储库相关的建议,并将来自 git 存储库的所有适当提交视为“已经 pull ”以维护变更集奇偶校验。

我看到 hg-git 在内部似乎使用了一个文件 .hg/git-mapfile,我认为它映射了上游 git 和本地 Mercurial 存储库之间的变更集。这可能是一个线索。

让我的本地 Mercurial 存储库进入这样一种状态的最简单方法是什么,它基本上表现得好像它开始是作为上游 git 存储库的克隆,但维护我自己的所有随着时间的推移添加的不相关的变更集?

(注意:我不希望使用新的克隆“重新开始”,然后应用我的私有(private)更改,因为我想出于我自己的构建/调试目的维护此存储库的历史完整性)。

最佳答案

我以前用git做过类似的事情。在 git->git 案例中,我能够执行 git-merge --strategy=ours 这基本上让我当前的存储库相信所有被 merge 的东西都是空操作。

你需要做的是一个分支,它代表你知道的所有上游已经 merge 到你的树中的东西,然后做一个无操作风格的 merge 到你的树中,然后开始通过“真正的” merge 引入变化。

从这个网站:

https://www.mercurial-scm.org/wiki/TipsAndTricks#Keep_.22My.22_or_.22Their.22_files_when_doing_a_merge

我看到像下面这样的命令可以帮助您 merge 上游存储库并忽略上游的所有内容:

$ hg --config ui.merge=internal:local merge #keep my files

这应该允许您将下游与上游重新同步。

关于git - 我如何使用 hg-git 关联现有的 Mercurial 和 git 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7501157/

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