gpt4 book ai didi

mercurial - 如何使用 Mercurial 集成主要修订?

转载 作者:行者123 更新时间:2023-12-04 19:31:28 25 4
gpt4 key购买 nike

首先,我对 Mercurial 和分布式源代码控制系统作为一个整体是新手。一般来说,我使用过 perforce,所以我将使用 perforce 术语以保持我想说的清楚。

我的问题是我正在制作基于开源引擎的游戏,并且该引擎经常出现代码丢失。但是,我自己也在自己的仓库中对引擎代码进行了一些更改。我需要进行设置,以便我可以轻松地将代码中的更改 merge 到我自己的代码中,而不会丢失我的更改,也不必手动检查每个文件。

在 Perforce 中,我要做的是只为引擎代码创建一个分支,然后是我的主分支,所有引擎代码删除都将提交到引擎代码分支,然后我将集成引擎代码分支进入主代码分支。解决问题,提交,然后瞧。

我觉得这与 Mercurial 中的工作方式非常接近,只是我缺少一些小的理解来帮助我弄清楚。首先,我不确定我的引擎代码应该在一个分支中,还是一个完全独立的存储库中。即使我确实知道这一点,我也不清楚如何来回移动代码并将它们正确分开。

抱歉,这是一个厨房水槽问题。我倾向于通过在最深处折腾自己来学习。

最佳答案

首先,我将引擎和游戏分开在两个存储库中。如果您想在其他地方使用修改后的引擎,如果您想为原始项目做出贡献,如果您想将某人放在引擎上而不是游戏上,这会有所帮助,......并将他们重新组合在一起,只需使用 subrepo功能。

现在在游戏引擎修改领域,只要没有冲突的改动,你只需要pullmerge然后提交

让我们假设一个场景:

1----2----4----5---------8----A----B   <---- your changes
\ / / /
---3-------6----7----9----/ <---- original changes

有一天,您开始使用引擎 (1)。引擎已更新(2),但对您来说没问题,您可以这样使用它。事实上不,你必须改变一些东西(4),同时,改变是在原来的(3)上进行的。没问题,只需获取它们 (5) pull->merge->commit。哦,他们做了一个改变(6)和另一个(7)。好的,让我们包含它们 (8) pull->merge->commit。依此类推,他们进行了更改 (9),您进行了更改 (A),然后将它们 merge (B)。

从集中式版本控制切换到分布式版本控制时要记住的一件不自然的事情是,分支和 merge 是一个正常的(和轻量级的)过程,而不是一个特殊的过程。有些人每天 merge 数百次。

更多的理解尝试搜索“mercurial workflow”(这里我暴露了一个最小的)并阅读优秀的书Mercurial: The Definitive Guide通过布莱恩奥沙利文

跟进评论

考虑一个像这样的最小项目:

mygame/
├── .hg/
├── .hgsub
├── lib/
│   └── engine/
│   ├── enginefile.cpp
│   └── .hg/
├── mygame.proj
└── src/
└── mygamefile.cpp

现在你的评论:

Also, I would like to be able to work on all my game's content in the same repository[...]

如果我理解得很好,实际上,您希望“能够在同一个 [项目] 中处理所有 [您的] 游戏内容”。如果我猜错了,请纠正我。

这里,包含 .hg 子目录的两个目录是独立的存储库(mygameengine)。但是您可以嵌套它们,而无需在 IDE 中创建单独的项目。所以两个嵌套的存储库,但只有一个项目。在您的构建配置(Makefiles、解决方案...)中,您甚至可以将 mygame 引用为 engine 作为 引擎 子存储库始终存在(通常用于在游戏中使用引擎中的 header )。

[...] would it be possible to get it slightly more specific? Example commands, repositories, paths, etc?

  • 关于路径,请看第二张图。
  • 更新引擎,在engine目录(cd lib/engine):hg pull, hg merge, hg commit -m "将新的原始文件与我的修改 merge ", cd .., hg commit -m "updated to new engine version", cd .., hg commit -m "updated to new engine version",现在您有了包含更改的新版本。
  • 对于其他基本用途,它看起来像其他版本控制系统。在您的情况下,this文章可能有助于将 perforce 映射到 mercurial 命令。

关于mercurial - 如何使用 Mercurial 集成主要修订?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5527629/

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