在 Mercurial 中分离工作
Separating work in Mercurial
我正在玩弄 Mercurial,我有一个关于分离各种工单工作的问题(我使用 PyCharm 作为我的 IDE,但这更像是一个一般的 Mercurial 问题)。
我的工作流程是这样的:索取票证(错误、功能、重构等),创建关联的书签,破解,将我的书签推送到代码审查,代码准备好进行集成测试。在集成测试期间,我获取所有书签,合并它们并进行测试。
我的问题是当我推送我的代码时。我推送的第一个书签沿着默认分支继续,而我推送的第二个、第三个、第四个等书签沿着默认分支创建新的标题。这很好,因为如果在测试期间发现错误,可以删除相关书签的代码,并可以继续测试/发布剩余代码。 (即:我可以挑选要合并和测试的书签)问题出在第一个书签上。如果我理解Mercurial,你只能合并heads,这意味着我要合并测试的第2个,第3个,第4个等书签必须与第一个被推上去的书签合并;这意味着如果我需要从第一个书签中删除代码,我不能(即:第一个书签 必须 是合并组的一部分)。
现在,这可以通过使用分支来解决。一个新分支就是一个新的 'head',所以我可以挑选并选择要合并和测试的分支。然而,据我所知,Mercurial 中的分支应该是一个长期的事情(比如 QA、测试和发布分支),而不是像错误修复这样的小事。
我应该只使用分支,还是我做错了什么?
通常,您可以合并任意版本,除非一个是另一个的直接后代。
书签只有在更新后才会激活。
如果您不希望书签变为活动状态,只需通过引用哈希更新到它所附加的版本即可。
据我了解,您实际上缺少一个书签。一个书签,它指示已批准的头部并且不包含来自您的错误修复头部的任何测试代码。您可以使用特殊的 @ 书签为该修订添加书签。
哦等等,我想通了;我只是在犯傻,对不起那些家伙。
因此供将来参考:
我的问题是我无法挑选要合并的书签,因为第一个书签会沿着 'main line of development' 继续,我必须更新它(因为它是一个头,我只能合并头)。 但是,绝对没有什么可以阻止我更新到不同的头(例如书签#2)并合并到我想要的任何书签中。 IE:出于某种原因,我不得不更新到 'main line' 头部(其中包含来自书签 #1 的代码)以进行合并,而我不必这样做。
我正在玩弄 Mercurial,我有一个关于分离各种工单工作的问题(我使用 PyCharm 作为我的 IDE,但这更像是一个一般的 Mercurial 问题)。
我的工作流程是这样的:索取票证(错误、功能、重构等),创建关联的书签,破解,将我的书签推送到代码审查,代码准备好进行集成测试。在集成测试期间,我获取所有书签,合并它们并进行测试。
我的问题是当我推送我的代码时。我推送的第一个书签沿着默认分支继续,而我推送的第二个、第三个、第四个等书签沿着默认分支创建新的标题。这很好,因为如果在测试期间发现错误,可以删除相关书签的代码,并可以继续测试/发布剩余代码。 (即:我可以挑选要合并和测试的书签)问题出在第一个书签上。如果我理解Mercurial,你只能合并heads,这意味着我要合并测试的第2个,第3个,第4个等书签必须与第一个被推上去的书签合并;这意味着如果我需要从第一个书签中删除代码,我不能(即:第一个书签 必须 是合并组的一部分)。
现在,这可以通过使用分支来解决。一个新分支就是一个新的 'head',所以我可以挑选并选择要合并和测试的分支。然而,据我所知,Mercurial 中的分支应该是一个长期的事情(比如 QA、测试和发布分支),而不是像错误修复这样的小事。
我应该只使用分支,还是我做错了什么?
通常,您可以合并任意版本,除非一个是另一个的直接后代。
书签只有在更新后才会激活。
如果您不希望书签变为活动状态,只需通过引用哈希更新到它所附加的版本即可。
据我了解,您实际上缺少一个书签。一个书签,它指示已批准的头部并且不包含来自您的错误修复头部的任何测试代码。您可以使用特殊的 @ 书签为该修订添加书签。
哦等等,我想通了;我只是在犯傻,对不起那些家伙。
因此供将来参考: 我的问题是我无法挑选要合并的书签,因为第一个书签会沿着 'main line of development' 继续,我必须更新它(因为它是一个头,我只能合并头)。 但是,绝对没有什么可以阻止我更新到不同的头(例如书签#2)并合并到我想要的任何书签中。 IE:出于某种原因,我不得不更新到 'main line' 头部(其中包含来自书签 #1 的代码)以进行合并,而我不必这样做。