Version control 签入源代码管理之前的过程?
我开始在工作中获得“破坏构建的家伙”的名声 问题不在于我编写的代码不可靠,而是当涉及到将我的修复返回到源代码控制时,一切都出了问题 我经常做一些愚蠢的事情,比如:Version control 签入源代码管理之前的过程?,version-control,Version Control,我开始在工作中获得“破坏构建的家伙”的名声 问题不在于我编写的代码不可靠,而是当涉及到将我的修复返回到源代码控制时,一切都出了问题 我经常做一些愚蠢的事情,比如: 忘记添加新文件 意外地检入代码以查找半修复的错误和另一个错误修复 在签入文件之前忘记将其保存在VS中 我需要养成一些习惯/工具来阻止这种情况 您经常做些什么来确保您签入的代码是正确的,并且是需要签入的代码 编辑 我忘了提到这个地方会变得非常混乱。我经常在同一时间在同一个代码库中处理两三件事情。当我签入时,我真的只想签入其中的一项。
- 忘记添加新文件
- 意外地检入代码以查找半修复的错误和另一个错误修复
- 在签入文件之前忘记将其保存在VS中
我忘了提到这个地方会变得非常混乱。我经常在同一时间在同一个代码库中处理两三件事情。当我签入时,我真的只想签入其中的一项。我通常都会先做“获取最新信息”,然后再构建。如果构建良好,那么我将签入我的代码。一些建议:
- 试着一次解决一个问题。很容易对代码库进行不相关的更改,然后将其作为一个大的块提交,并且日志消息很差。Git在这里非常出色,因为您可以非常轻松地移动交换机分支,并隐藏和挑选更改
- 在提交之前运行status命令,查看您已经接触了哪些文件,以及是否创建了需要添加到版本控制的新文件
- 运行diff命令查看实际更改的内容。通常情况下,您会发现您留下了一些应该删除的调试日志记录,或者进行了一些不必要的更改,这些更改会使差异变得混乱。请尝试使差异尽可能小和干净
- 确保您的工作副本中包含您的更改
- 在签入之前进行更新,并确保您的工作副本中包含其他人的更改
- 运行您可能必须运行的测试套件,以确保您的更改正常工作
- 做出小而频繁的承诺。在中断提交很小的情况下,更容易找出是什么破坏了构建
团队可以做的其他事情是像David M建议的那样设置一个持续集成服务器,以便尽快自动发现损坏的构建。在过去,我使用“清晰案例中的分支”来帮助解决此问题。我使用的过程如下。我从来没有使用过SorceDepot,所以我不知道如何将其适应于它
通过创建分支,然后将更改合并到不同的视图(我使用合并管理器进行合并),任何未包含或未签入的文件都会立即导致问题。这样,在稳定分支上签入时,所有内容都会得到测试。避免问题的最好方法是使用大多数SCM中提供的挂钩(SVN和Mercurial中肯定有挂钩,我相信其他高级SCM中也一定有挂钩)。将单元测试附加到钩子上,并使其在每次有人签入代码时运行—恰好在代码签入之前。通过这种方式,您将实现两件事:
- SCM repo中的代码将始终通过测试
- 您不会犯大多数简单的错误,因为如果您有像样的测试套件,它们应该很容易被检测出来
在任何合并操作之后(例如,在SVN更新之后),都应该重复这些操作。以下是我一直在做的事情。我过去使用ClearCase和CVS进行源代码控制,最近我使用Subversion和VisualStudio2008作为我的IDE
如果您能够跟踪您正在处理的所有问题,那么为每个问题保留单独分支的建议也非常好。我喜欢为Windows资源管理器提供Tortoise插件。文件图标都标有提交、修改或未添加的图标,因此很容易查看文件的状态。我还为修改后的文件启用元数据,这样我就可以在列表(详细信息)视图中对更改的文件进行排序,在列表(详细信息)视图中,这些文件会冒泡到顶部,以便