使用hg(Mercurial)提交私有开发服务器而不会混淆共享存储库的历史记录?

时间:2012-04-26 15:56:55

标签: mercurial

我正在尝试使用Mercurial和私有开发服务器来改进我们的开发过程,但在我们的情况下需要一些关于最佳实践的建议。

  • 我们拥有所有开发人员都可以访问的集中式mercurial存储库。
  • 每个开发人员都有一台Windows机器,并使用NuSphere IDE进行开发。
  • 每个开发人员都有一个专用的Linux开发服务器,通常可以在本地网络上使用,但半定期需要通过VPN远程访问。

现在,我希望每个开发人员都能够进行开发工作,在私有开发服务器上查看结果,并且对块感到满意,以便能够通过一个很好的提交消息将其推送到集中式存储库。然后,这将在登台服务器上进行测试,然后再进行测试。

每个开发人员如何通过他们自己的开发机器共享他们在Windows机器上所做的更改。我已经尝试在开发机器上设置SAMBA共享,但通过远程连接它很慢。

我被告知我也应该使用Mercurial进行这部分过程。但是,如果每个开发人员都对其本地仓库进行了每次更改,然后将其推送到他们的私有开发服务器,那么在将更改推送到集中式存储库时,我们将会有大量非常小的提交。这将稀释提交消息的质量,例如“添加缺失}”,“修复拼写错误x”,或完全丢失提交消息等。

我已经查看了关于合并提交历史的hious hg扩展但是相信我会遇到问题,因为提交将存在于2个repos(开发机器和开发服务器)上并且从其中一个中删除提交似乎是它会在下一次推动时引起问题。

如何使用Mercurial实现持续开发/提交到开发服务器的目标,同时不会混淆共享存储库的历史记录?

2 个答案:

答案 0 :(得分:3)

看起来您希望Rebase功能为--collapse。这允许您将分支压缩成单个提交。查看RebaseExtension文档,特别是--collapse

的功能

答案 1 :(得分:1)

我没有看到你提到的那种粒度提交的问题。为什么要为“清洁历史”引入复杂的工作流程?粒度提交还有许多优点,例如更改流程更容易理解和代码审查,您可以轻松地挑选对其他人也有用的修复。

如果您的开发人员在推送到主存储库时输入合并提交中完成的工作的明确描述,那么您可以通过遵循主分支上的合并并忽略所有开发人员分支来遵循相对简洁的开发线。如果您需要更多细节,例如因为您想要代码审查或调试特定问题,您可以深入分支。

重新。空提交消息,Mercurial将拒绝检查丢失的提交消息,如果您的同事试图通过输入“。”来绕过它。或“ - ”然后你应该责骂他们; p。或者添加一个传入的钩子,如果它们真的很顽固,就会阻止它们。