4. 开发者沙箱

开发者“沙箱”是每位开发者存放其代码库工作副本的地方。在 CVS 中,这被称为工作目录。开发者在这里构建、测试和调试他们正在开发的模块。“沙箱”也可以是进行暂存构建或生产构建的区域。在工作区中所做的更改会被检入到 CVS 仓库中。此外,仓库中其他人所做的更改也必须定期在沙箱中更新。

与开发者沙箱相关的最佳实践包括:

4.1. 保持系统时钟同步

CVS 通过使用文件的时间戳来跟踪源文件的更改。如果每个客户端系统的日期和时间不同步,CVS 很有可能会感到困惑。因此,必须使用中央时间服务器或类似的机制来保持系统时钟同步。

CVS 从一开始就被设计为处理多个时区。只要主机操作系统已正确设置和配置,CVS 就能够正确跟踪更改。

4.2. 不要共享沙箱

沙箱对于每位开发者或每个目的都必须是唯一的。它们不应同时用于多种用途。沙箱可以是开发者的工作区,也可以是最终版本的构建区。如果共享此类沙箱,则沙箱的所有者将不会意识到对文件所做的更改,从而导致混乱。

在 CVS 中,当使用 cvs checkout {project-name} 命令为 CVS 项目检出工作副本时,沙箱会自动创建。

在非常大型的项目中,开发者检出整个源代码到本地沙箱中是没有意义的。在这种情况下,他们可以定期获取构建团队生成的二进制文件,用于应用程序中所有未被他们更改的组件,并且仅检出由开发者构建的部分。

例如,在 Java 项目中,构建团队可以将他们上次成功构建的结果以 JAR 文件的形式保存在网络文件服务器上的标准位置。各个开发者将使用标准的类路径设置,该设置将网络驱动器挂载在标准路径上。因此,开发者将自动获得他们需要的最新版本的文件。

4.3. 与仓库保持同步

为了获得如上所述在沙箱中工作的好处,开发者必须使其沙箱与主仓库保持同步。定期使用带有适当标签或分支名称的 cvs update 将确保沙箱保持最新状态。

4.4. 不要在沙箱外工作

沙箱可以被认为是 CVS 可以在其中跟踪对各种源文件所做更改的受控区域。属于其他开发者的文件将由 CVS 在开发者沙箱中自动更新。因此,在沙箱中工作的开发者将获得并发开发的许多好处。

4.5. 完成后清理

确保在完成文件工作后清理沙箱。可以使用 cvs release 命令在 CVS 中完成清理。这确保了开发沙箱中不存在旧版本的文件。如前所述,可以使用构建团队预构建的二进制文件来确保应用程序的所有部分都可供开发者使用,而无需在沙箱中进行完整编译。

4.6. 经常检入

为了帮助其他开发者使其代码与你的代码保持同步,你必须经常将你的代码检入到 CVS 仓库中。最佳实践是在一段代码完成、审查和测试后立即检入,使用 cvs commit 检入更改,以确保你的更改已提交到 CVS 仓库。

CVS 提倡并发开发。只有当所有其他开发者都定期了解正在进行的更改时,并发开发才有可能实现。这种意识可以称为“情境感知”

Warning

常见的“不良”实践之一是通过电子邮件在开发者之间共享文件。这与上面提到的大多数最佳实践相悖。要在两个开发者之间共享更新,必须使用 CVS 作为通信媒介。这将确保 CVS “意识到”更改并可以跟踪它们。因此,如有必要,可以建立审计跟踪。