0

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

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

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

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

如果我想更正错字,我会直接在稳定版本中进行。

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

如果我使用 hg push 我的书签数据不会被传递。如果我分别进行 hg push -B stable 或 hg push -B development,则推送我的书签数据。

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

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

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

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

谢谢

4

3 回答 3

1

从 Mercurial 2.3 开始,pull 也会获取远程存储库的书签。以前,您必须指定-B <bookmark>获取书签和变更集。因此,您的服务器存储库在拉取后将具有正确的书签。

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

更新

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

于 2013-02-12T13:45:10.567 回答
1

恕我直言,正确的用法是使用命名分支而不是书签。

于 2013-02-12T17:10:16.010 回答
0

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

然后在现场我可以更新到最新版本并且知道那是最后一个好的版本。我的“开发”只是默认分支的负责人,我不断向其中添加新的开发内容。这样,您只需推送即可,而不必担心书签。

这可能不是您想要的或您设想的,但它是您描述的情况的可行解决方案。

如果我们需要修复(您的示例中的错字),我可以更新到上一个版本,更正类型,测试,如果满意,将其标记为下一个版本(rel-2.41)。将该新分支合并回默认分支,以便我的开发分支也有修复。跳转到实时服务器并拉取/更新到 rel-2.41

这对你有好处吗?

于 2013-02-12T13:32:47.570 回答