Mercurial书签-用于开发和稳定版本

Mercurial书签-用于开发和稳定版本,mercurial,branch,bookmarks,branching-and-merging,Mercurial,Branch,Bookmarks,Branching And Merging,这不是另一个什么是书签/什么是分支的问题-我已经阅读了所有这些帖子,现在想澄清一些关于正确使用的事情 我正在开发一个网站。我想要一个稳定的版本,和一个开发版本 所以我创建了两个书签“稳定”和“发展” 如果我想创建一个新功能,我会更新到开发书签,然后创建我的功能 如果我想纠正一个打字错误,我直接在稳定版本中进行 我的困惑如下。 我在bitbucket有一个中央存储库 如果使用hg push,则不会传递书签数据。如果我分别执行hg push-B stable或hg push-B开发,那么我的书签数据

这不是另一个什么是书签/什么是分支的问题-我已经阅读了所有这些帖子,现在想澄清一些关于正确使用的事情

我正在开发一个网站。我想要一个稳定的版本,和一个开发版本

所以我创建了两个书签“稳定”和“发展”

如果我想创建一个新功能,我会更新到开发书签,然后创建我的功能

如果我想纠正一个打字错误,我直接在稳定版本中进行

我的困惑如下。 我在bitbucket有一个中央存储库

如果使用hg push,则不会传递书签数据。如果我分别执行hg push-B stable或hg push-B开发,那么我的书签数据将被推送

然后我有两台服务器,一台测试服务器和一台实时服务器。 如果我ssh到服务器上,并从bitbucket执行hg拉取操作,因为书签不在服务器上,那么拉取的是什么?当我使用hg update时,工作副本更新到什么

我想正确的用法如下。本地存储库和我的两个书签“稳定”和“开发”。我根据需要在两者之间切换,并使用hg push-B bookmark名称将它们推送到bitbucket。然后我分别登录到我的测试/实时服务器,并获取正确的书签版本

一旦我测试了我的开发书签,我就可以将它与我的稳定书签合并,并将其拉到实时服务器上

我的问题是,如果我在拉到live server时意外忘记指定书签,会发生什么情况


谢谢

我将书签视为本地标签,仅此而已。所以,如果我想推送标签信息,那么我就使用实际的标签来标记稳定的版本。每次发布时,我都会将其标记为“rel-2.4”

然后在现场,我可以更新到最新版本,并知道这是最后一个好的版本。我的“dev”只是默认分支的负责人,我一直在向其中添加新的开发内容。这样你只需推一下,就不用担心书签了

这可能不是您想要的或您设想的,但对于您描述的情况,这是一个可行的解决方案

如果我们有一个我们需要做的修复(你的例子中有一个输入错误),我可以更新到上一个版本,更正类型,测试,如果高兴的话,将其标记为下一个版本(rel-2.41)。将新分支合并回默认分支,这样我的开发分支也可以修复。跳转到实时服务器并拉/更新到rel-2.41

这对你有好处吗?

从Mercurial 2.3。以前,您必须指定
-B
来获取书签和变更集。因此,您的服务器存储库在拉取后将具有正确的书签

如果您使用的是早期版本,则必须
拉-B
才能获得书签。当然,如果您不想将所有
开发
变更集拉到您的live服务器上,您也可以这样做

更新
使用不带参数的
hg update
将获得
提示
,它始终是添加到存储库的最后一个变更集,无论是
稳定的
开发
还是意外取消书签(实际上,它将为您获取添加到当前分支的最后一个变更集,但听起来您好像没有使用命名分支)。为了在更新时获得一致的结果,我建议您明确说明希望每个服务器存储库更新到哪个书签。如果您担心忘记指定,请使用脚本自动化更新过程。

正确的用法是使用命名分支而不是书签