我该如何实现这个Mercurial + BitBucket工作流程?

时间:2012-07-31 04:48:30

标签: version-control mercurial open-source dvcs bitbucket

我是DVCS的新手,所以请耐心等待......

我是一个软件库的作者,目前作为BitBucket上的私有存储库托管。我想向公众发布我的库的源代码,但是使用以下设置:

  • 我想在BitBucket上维护两个存储库,一个私有存储库和一个公共存储库。
  • 我希望公共存储库的初始内容是私有存储库的当前内容,没有任何历史记录
  • 我想继续提交私有存储库而不涉及公共存储库。然后,偶尔,我想将一大堆提交到私有存储库,并将它们推送到公共存储库,作为单个变更集,并将与其自己的提交消息即可。

我该如何解决这个问题?如果它有帮助,我的私人仓库只有一个分支(主要分支)。

2 个答案:

答案 0 :(得分:3)

这很容易做到。我会创建一个“发布”分支,并在您想要推送到公共仓库时合并到该分支中。然后使用convert扩展名仅提取这一个分支。

但是,这样工作几乎不是一个好主意。潜在的贡献者通常不希望闭门造车。对于开源工作,通常最好打开一切 - 错误跟踪器,源代码库,维基,邮件列表,评论......

答案 1 :(得分:3)

连接变更集

好吧,可以使用these technics之一或--collapse {{1}}来实现连接变更集。

分支结构

要做你想做的事,你必须有一个带有详细提交的开发分支和一个带有连接的分支的发布分支。只要发布分支没有来自开发分支的任何节点作为祖先,您就可以只推送发布分支。这意味着你必须使用上面的一个选项,你不能将开发分支合并到发布分支,因为这会将开发分支节点设置为公共分支的祖先,你必须推送这些节点。

虽然这是可能的,但我同意@Ringding,它不是常规的工作流程。这有两个很好的理由不这样做:

  1. 您正在为工作流程添加不必要的复杂性,事情应该更简单。
  2. 这些发展变化集是导致最终版本的演变步骤,它们是历史的一部分,隐藏就像撒谎。这就是历史编辑工具是扩展而不是核心命令的原因,它们不应该是正常工作流程的一部分。