仅合并另一个分支中的一个变更集

发布于 2024-11-30 05:26:30 字数 279 浏览 1 评论 0 原文

我是 Mercurial 的新手,我读到不可能仅合并来自另一个分支的单独变更集。 然后我不知道解决这个问题的最佳方法是什么:

  1. 我从稳定版本 R1 开始
  2. 我继续在 R1 上开发:CS1,CS2,CS3
  3. 在某些时候我需要解决稳定版本 R1 中的错误。我只想应用开发线(fe CS2)中的一个变更集,

最好的方法是什么?由于合并不起作用,我所做的就是制作 CS2 补丁,然后在新的稳定分支中应用该补丁来修复错误。这就是水星的方式吗?

干杯,

I'm new to mercurial and I read that it's not possible to merge only a separate changeset from another branch.
Then I don't know what's the best approach to solve that:

  1. I start with an stable revision R1
  2. I continue developing on R1: CS1,CS2,CS3
  3. At some point I need to solve bug from my stable revision R1. And I want to apply only one changeset from developing line (fe CS2)

What's the best aproach? As merging didn't work what I've done is make a patch of CS2 and then apply the patch in the new stable branch to fix the bug. That's the Mercurial way?

Cheers,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦幻的味道 2024-12-07 05:26:30

更新:从 Hg 2.0 开始不再需要任何扩展

正如“CAD 家伙”所指出的,这正是 graft 命令是在 Hg 2.0 中引入的。

SourceTree

最简单的方法是使用像 SourceTree 这样的 GUI,只需双击- 单击要切换的 TARGET 分支,然后在任何其他修订上按鼠标右键并选择“移植”命令(奇怪的是它也可以是当前分支的修订)。
如果没有冲突,SourceTree 将立即为当前分支创建一个新版本。

TortoiseHg

完全一样,选择TARGET Branch,然后在要嫁接的修订版上人民币:如何使用 TortoiseHg 进行移植

命令行

要使用命令行执行此操作,只需切换到 TARGET 分支,然后

hg graft -r {revision_number}

执行{revision_number} 显然是您要合并到当前分支中的修订版本号。这将在您当前的分支中创建一个新的变更集,其中包含您在命令中使用的修订版本中的所有文件。

要了解有关移植命令的更多信息,请阅读 stackoverflow 上的此线程

UPDATE: No need for any extension anymore as of Hg 2.0

As 'CAD bloke' pointed out, this is exactly what the graft command is for which was introduced in Hg 2.0.

SourceTree

The easiest way to do this is with a GUI like SourceTree, just double-click on the TARGET branch to switch, then press the right mouse button on any other revision and select the 'Graft' command (strangely it can also be a revision of the current branch).
If there are no conflicts SourceTree will immediately create a new revision for the current branch.

TortoiseHg

Exactly the same, select TARGET Branch, then rmb over the revision you want to graft: How to graft with TortoiseHg

Command Line

To do this with the command line just switch to the TARGET branch and then execute

hg graft -r {revision_number}

with {revision_number} obviously being the number of the revision you want to incorporate into you current branch. This will create a new changeset in you current branch with all the files from the revision whose number you used in the command.

To find out more about the graft command read this thread here on stackoverflow

温柔嚣张 2024-12-07 05:26:30

移植扩展可自动执行单个命令的操作。

但我认为首选方法(根据情况并不总是可行)是首先在 R1 之上进行修复,然后将其合并到您的开发技巧中。

即:

  1. 从稳定版本 R1 开始。
  2. 您做了一些工作,cs1...csN
  3. 为了在 R1 之上保持稳定,需要进行重要修复,因此您hg 更新 R1
  4. 进行修复,这会产生R2
  5. 返回到您上次停下的地方,hg update csN
  6. 合并稳定,这样您就可以修复,hg merge R2hg commit...
  7. 继续处理csN+1

The transplant extension automates what you've done to a single command.

But I think the preferred way (which depending on the scenario isn't always possible) is to make the fix on top of R1 in the first place, and then merge that to your development tip.

That is:

  1. Start with stable revision R1.
  2. You do some work, cs1...csN.
  3. An important fix is needed for stable on top of R1, so you hg update R1.
  4. Do the fix, this yields R2.
  5. Go back to where you left off, hg update csN.
  6. Merge stable so you have the fix, hg merge R2, hg commit...
  7. Continue working on csN+1.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文