我检查了台式计算机上的代码库并对其进行了一些处理。现在我要离开并希望在我的笔记本电脑上进行这些更改。

一种解决方案是简单地提交不完整的代码,然后将它们拉到我的笔记本电脑上。但这意味着我在存储库中有反编译代码,这是我想避免的。

处理这个问题的最佳方法是什么?生成并应用补丁?使用 hg serve 来移动不完整的变化?

最佳答案

这里有三种方法可以做到这一点。我将讨论每种方法的优缺点:

选项 1 :使用 hg diff 获取显示未提交更改的 diff 文件,然后在接收端使用 hg import --nocommit 应用这些更改而不创建新的变更集

  • 优点 :简单,不创建变更集
  • 缺点 :实际上并不像 DVCS 那样使用 mercurial。可能无法捕获新添加的文件

  • 选项 2 : 在发送端提交,推送到接收端(或从中拉出,或将 hg bundle 放在闪存驱动器上),绕过工作服务器,接收端的 update,然后 上的 hg rollback 边以消除变更集(但保留更改。
  • 优点 :使用推和拉来移动更改,如 mercurial 打算
  • 缺点 : Hacky。依赖于仅适用于 1 级深度的回滚。不小心拉了两次,第一次就无法撤消。

  • 选项 3 :在发送方提交。推送到只有您可以访问的开发人员存储库,并在接收端拉。在事情建立之前不要推送到公司 repo ,但是当你推送时推送所有间隙变更集
  • 优点 : DVCS 的真正含义。您的工作顺序已记录并保存
  • 缺点 : 需要设置一个仅供你使用的克隆

  • FWIW,我推荐选项 3。每个开发人员的存储库正是 DVCS 的内容。如果您的公司不能轻松地在您可以在家中和外地访问的服务器上设置一个,请向他们指出记录使开发人员获得完整修复/功能 的过程的巨大值(value)鼓励开发人员频繁推送到不需要编译的存储库有利于日常备份。

    最后,在完成功能或修复后,您始终可以折叠所有中间变更集。我不喜欢这样做(我是一个展示你工作的人),但方法如下:Can I squash commits in Mercurial?

    关于mercurial - 在 mercurial checkout 之间移动不完整的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1737131/

    10-15 15:00