我在源代码管理中很少遇到问题。在此处的示例中,Perforce出现了问题,但是我怀疑许多SCM(尤其是分布式SCM)也会出现相同的问题。
Perforce支持变更列表(或您愿意的变更集)。变更列表支持两种常见用法:
在大多数情况下,一切都很好。但是,当您实现电子邮件功能时,您到处都会进行数不胜数的更改,尤其是在main.h中,并且碰巧发生在进行错误修复时,您发现必须进行的微小更改也位于main.h中。新功能的变更列表已经 check out 了main.h,因此您无法轻松地将其放入变更列表中以进行错误修复。
现在你该怎么办?您有几种选择:
选项1可能是最干净的,但并不总是实用的。我正在从事的一个项目包含数百万行代码和一个非常复杂的构建过程。设置新环境需要一天的时间,因此5分钟的错误修复实际上并不实用。
选项3是一个不好的选择,但是它是最快的,因此非常诱人。
剩下的选项2是我通常会使用的选项。
有人有更好的解决方案吗?
我对冗长的问题表示歉意,但是我在StackOverflow上发现,完全思考问题会得出更好的答案。
最佳答案
这个确切的问题被称为“缠结工作副本问题”。 Ryan Tomayko有一个名为The Thing About Git的博客条目,它详细讨论了此问题以及Git如何解决该问题。
这是关于Git的最好的事情之一。我至少每天使用git add -p
来帮助提交彼此独立的有意义的代码块。在同一个源文件中存在两个逻辑上不同的更改,这一事实变得无关紧要。
关于version-control - 处理源代码管理系统中的多个变更集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/449642/