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

时间:2013-02-12 13:23:22

标签: mercurial branch bookmarks branching-and-merging

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

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

所以我创建了两个书签'稳定'和'开发'。

如果我想创建新功能,我会更新到开发书签,并创建我的功能。

如果我想纠正拼写错误,请直接在稳定版本中进行。

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

如果我使用hg push我的书签数据未通过。如果我分别按-B stable或hg push -B开发,那么我的书签数据就会被推送。

然后我有两台服务器,一台测试服务器和一台实时服务器。 如果我ssh到服务器并从bitbucket执行hg pull,因为服务器上没有书签,拉出什么,以及当我使用hg update时工作副本更新为什么?

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

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

我担心并因此我的问题是会发生什么如果我在拉到实时服务器时意外忘记指定书签?

由于

3 个答案:

答案 0 :(得分:1)

来自Mercurial 2.3,pulling gets the remote repository's bookmarks as well。之前,您必须指定-B <bookmark>才能获取书签和更改集。所以你的服务器存储库在提取后会有正确的书签。

如果您使用的是早期版本,则必须pull -B <bookmark>才能获取书签。当然,如果您不想将所有development更改集拉到您的实时服务器上,那么无论如何都可以这样做。

更新

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我将书签视为本地标签,而不是更多。因此,如果我想推送标记信息,那么我使用实际标记来标记稳定版本。每次我发布时都会标记它,例如“rel-2.4”。

然后在现场我可以更新到最新版本,并知道这是最后一个好的版本。我的“dev”只是默认分支的头部,我不断在其中添加新的开发部分。通过这种方式,您可以轻松推动书签。

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

我们是否应该有一个我们需要做的修复(在你的例子中是一个拼写错误)我可以更新到最后一个版本,更正类型,测试,如果快乐将它标记为下一个版本(rel-2.41)。将新分支合并回默认值,以便我的开发分支也有修复。跳转到实时服务器并拉/更新到rel-2.41

这对你有好处吗?