在处理遗留代码时,我需要使用mercurial对我的开发过程提出建议。
当我为遗留项目开发新功能时,我经常需要在功能实现期间重构现有代码的一部分。我的意思是,我没有预料到重构,我需要在进行功能实现之前这样做,因为我将使用重构的代码。
由于我认为即使未实现该功能,重构也很有价值,我希望它本身就是一个变更集,而不是“功能”变更集的一部分。此外,由于我处理遗留代码,因此未经过单元测试,因此我只需要(手动)测试重构,而不需要开发特征代码。
因此,我在处理遗留代码时的当前流程如下:
我的过程中有什么可以用mercurial改进的吗?有没有办法暂时保存工作副本,并在将工作副本中的已保存更改放回时,对冲突进行处理?
如果没有,git是否比mercurial更能解决这个用例?
答案 0 :(得分:2)
shelve
扩展程序为您执行步骤3,4和7。可以找到详细信息here。
如果您正在使用TortoiseHg,它将内置于Repository菜单中的工作台。
答案 1 :(得分:2)
我的小偏差
3 - 将当前工作保存为MQ-patch
4 - qpop it
...
6 - 在单独的分支中提交
7 - qpush在重构分支之上,解决冲突,qpop
7a - 将重构 - 分支合并到功能分支
7b - qpush in feature-branch,解决冲突
7c - qfinish
答案 2 :(得分:1)
我没有提取补丁,而是提交代码:
如果您在步骤3中提交的工作正在运行,则奖励积分:),因为破解代码是重构后恢复工作的不良起点。
答案 3 :(得分:0)
当我遇到这种情况时,我会在一个大块中做所有事情,当我准备好提交时,我会使用qrecord
或手动(使用Emacs)分开修补补丁)。