Version control 频繁或不频繁的源签入?

Version control 频繁或不频繁的源签入?,version-control,Version Control,我刚刚签入代码,意识到我不知道我的代码理想情况下应该满足什么标准来执行签入 昨天我把我的项目签了一个星期后才签入。今天,我在做了一些更新后再次登录。有时我喜欢将我正在编写的代码签出,直到它能够通过一点测试 我的老板通常抱怨人们在周末或假期检查代码,所以我尽量避免这样做(如果不是因为别的原因,就是因为我忘了我在做什么) 我是否应该担心遇到大量的代码,或者因为有太多的代码需要搜索而无法找到bug?您应该只签入正在工作且不会破坏构建的代码,而不应该尝试将给定功能的所有代码一起签入,以创建一个好的可管理

我刚刚签入代码,意识到我不知道我的代码理想情况下应该满足什么标准来执行签入

昨天我把我的项目签了一个星期后才签入。今天,我在做了一些更新后再次登录。有时我喜欢将我正在编写的代码签出,直到它能够通过一点测试

我的老板通常抱怨人们在周末或假期检查代码,所以我尽量避免这样做(如果不是因为别的原因,就是因为我忘了我在做什么)


我是否应该担心遇到大量的代码,或者因为有太多的代码需要搜索而无法找到bug?

您应该只签入正在工作且不会破坏构建的代码,而不应该尝试将给定功能的所有代码一起签入,以创建一个好的可管理的更改集(假设您的版本控制系统支持更改集概念)


我不知道你所说的磁盘空间或搜索能力是什么意思。

如果你的源代码管理系统允许,我更喜欢创建一个私人分支或活动,并至少每天签入该分支或活动,或者更频繁地签入该分支或活动,如果我要开始一些有风险的事情。我只合并或交付这些分支或活动,以使其他人在我要做的一段时间后可以访问它们实际上,rking on是有效的。

我尽可能地保持签入的粒度,条件是我不会签入任何a)未编译、b)破坏单元测试或c)破坏向后兼容性(除非有这样的要求/设计)


如果我担心在机器上留下新的或更新的代码,我通常会创建(或要求创建)一个临时分支供自己使用,但在我重新加入我工作的分支之前,我只能使用尽可能少的时间。我可以推荐以下准则:

  • 每次签入都应该是“原子的”,这意味着您只更改系统的一部分。不建议使用一个大的签入来更改很多内容,因为这样就很难只恢复一个更改
  • 在彻底测试代码之前不要签入代码
  • 一旦代码准备好,请立即签入代码。这对于备份很有好处,因为您的工作副本与源代码管理中的最新更改不同步的时间越长
  • 无论您是经常签入还是不经常签入,磁盘空间应该大致相同
  • 对于可搜索性,只需确保您的签入附带有注释即可

像投票一样,尽早并经常登记

需要注意的是,它对集成过程的工作方式有一点影响。如果您有持续集成,除非您已经运行了单元测试并且确信它可以工作,否则您不想将东西检回到主干中


协调这两件事的方法是为您的工作区创建一个分支,经常在该分支上签入,并在进行更改和测试后合并回来。对许多更改进行大合并的烦恼会鼓励您将它们分解为小步骤。这是一件好事。

如果需要考虑磁盘空间,您确实需要更大的硬盘驱动器。即使在一个冗余、安全的环境中,它们也足够便宜,以至于不得不考虑它们是荒谬的

至于你多久登记一次,这通常是个人政策的问题。在我自己的七位程序员团队中,我倾向于在每张工作票上登记一次,而一位同事平均每天登记六次

这实际上是一个你对什么感到舒服的问题。唯一的官方政策是:不要破坏构建和工作特性。如果你可能不得不在中途交工作,那就多检查一下。这对我们很有用。

我经常登记入住

源代码管理为您提供了两件因不经常签入而丢失的东西:

  • 简化协作
  • 跟踪随时间变化的历史记录
其他开发人员需要知道代码库中正在发生的更改。尽早签入更改会通知他们您正在处理的内容。它可以帮助避免重复工作(或者多人执行相同的任务来修复相同的bug)。不频繁的签入可能会导致对代码进行重大和意外的更改,这更可能导致调试困难的情况(因为您刚刚签入的代码比较少,但因为它与系统其余部分交互的复杂性)

如果您的源代码管理系统不知道所做的更改,它将无法帮助您恢复更改。此外,如果您丢失了过去一周一直在进行的本地更改,则损失会更大

你不应该因为磁盘空间而限制自己。SCM系统在磁盘使用方面非常智能,但无论如何,存储都是廉价且充足的


这就是说,我建议你把你要做的工作分成小块,完成一块后再检查。这对您和其他开发人员来说会更容易。

应该经常签入

应该办理登机手续

  • 原子的。包含所有需要的更改,但不包含更多更改。也就是说
  • 空白更改自行提交
  • 只更改一个功能。这可能会更改多个功能,但不应以多种方式和/或位置更改功能
  • 评论道。签入注释应该使您能够快速找到提交,即使它已存在2年,并且您不再处理该特定源(甚至项目)
  • 工作。仅当代码实际构建并执行其声称的操作时才提交

如果你需要你的个人游乐场来考虑考虑一个工作分支或密尔