3

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

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

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

但是每个开发人员应该如何通过他们自己的开发机器与他们自己的开发机器共享他们通过他们的 IDE 在他们的 Windows 机器上所做的更改。我曾尝试在开发机器上设置 SAMBA 共享,但通过远程连接速度非常慢。

有人告诉我,我也应该在这部分过程中使用 Mercurial。但是,如果每个开发人员都将所有更改提交到他们的本地存储库,然后在将更改推送到集中存储库时将其推送到他们的私有开发服务器,我们将有大量非常小的提交。这将削弱提交消息的质量,例如“添加丢失的}”、“修复错字 x”或完全丢失提交消息等。

我已经查看了有关合并提交历史的verious hg扩展,但我相信我会遇到问题,因为提交将存在于 2 个存储库(开发机器和开发服务器)上,并且从其中一个存储库中删除提交似乎会导致下次推送的问题。

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

4

2 回答 2

3

看起来您想要 Rebase 功能与--collapse. 这允许您将分支压缩为单个提交。查看RebaseExtension文档,尤其是查看--collapse.

于 2012-04-26T16:16:44.803 回答
1

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

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

回覆。空提交消息,Mercurial 将拒绝签入丢失的提交消息,如果您的同事试图通过输入“。”来绕过它。或“-”,那么您可能应该责骂他们;p。或者添加一个传入的钩子,如果它们真的很顽固,它会阻止它们。

于 2012-04-27T08:48:46.257 回答