我已经在 SVN 存储库的目录中进行了 checkout 。该项目需要花费大量时间才能完全检查。因此,在创建我的 Hudson 工作时,我需要按顺序执行以下操作:
- 清理目录(这可以解决一些不明确的问题,例如:“Hudson 工作区在构建时被锁定”)
- 恢复更改
- 更新
在 hudson 就业创造表中,我对 checkout 策略的选择是:
- 尽可能使用 svn update,更新前使用“svn revert”
- 尽可能使用“svn switch”
- 尽可能使用“svn update”
- 清理结帐文件夹,然后结帐
- 通过首先删除未版本化/忽略的文件,然后“svn update”来模拟干净 checkout
- 清理工作区,然后结帐(已消除)
什么是适合我的情况的正确选项?
非常感谢!
最佳答案
如果您的构建正确完成,您应该能够简单地尽可能使用“svn update”。这是更新文件的最快方法。这意味着不要修改提交的文件,或者将构建工件放置在会干扰构建过程的目录中。在 Java 商店中,只需将所有构建的对象保存在子目录中(我们使用 target
来匹配 Maven,但其他人使用 build
或 diet
)不妨碍流程的其余部分。
大多数人都会将清理工作作为构建步骤的一部分。从理论上讲,这应该是没有必要的,并且这样做会延长构建时间。构建的想法是不做任何不必要的工作。如果源文件未更改,则不需要重建相应的目标文件。然而,Java 的编译速度非常快,大多数 Java 项目只是将构建目录清除干净。在 C 项目中,不删除旧对象会更好,因为它确实减少了构建时间。
如果您的构建过程存在问题,尽可能多地使用“svn update”无法工作,您应该修复您的构建过程。然而,我们旧的 Jenkins 服务器上有几个项目确实存在问题,而且它们根本没有更新到足以担心的程度。对于这些,我总是 checkout 一份新的副本。这需要最长的时间,但如果您的构建过程出现问题,我不会麻烦使用通过首先删除未版本化/修改的文件来模拟干净的 checkout 并首先使用 svn revert.这些可能会导致更新冲突,并导致您的构建出现问题。要么让构建正常工作,要么进行干净的检查。
关于jenkins - Hudson - 我该怎么做 "SVN clean up"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20218914/