git - jenkins 在 checkout 前清除存储库并强制克隆 vs Clean

标签 git jenkins

我试图理解用于 pull git 存储库的“清除存储库并强制克隆”和“checkout 前清理”这两个选项之间的区别。查看这两个选项的帮助部分,两者似乎具有相似的功能,我无法区分。它们的外观如下:

Wipe out repository & force clone:

Delete the contents of the workspace before building, ensuring a fully fresh workspace.

checkout 前清洁

Clean up the workspace before every checkout by deleting all untracked files and directories, including those which are specified in .gitignore. It also resets all tracked files to their versioned state. This ensures that the workspace is in the same state as if you cloned and checked out in a brand-new empty directory, and ensures that your build is not affected by the files generated by the previous build.

我找不到这两个选项之间的任何比较;既不在 Jenkins/GitPlugin wiki 中,也不在堆栈溢出中,甚至在谷歌中也不行。我们目前有两种选择,但我们计划通过删除“清除存储库并强制克隆”选项来减少构建时间。但我不想在这样做时破坏任何功能。如果您确定,请解释差异。提前致谢:)

最佳答案

Wipe out repository & force clone 将清理整个项目工作区并在构建之前再次克隆项目。这可能很耗时,具体取决于项目规模。如果项目是 1GB,则每次构建它都会下载 1GB。

Clean before checkout 删除作为构建的一部分创建的文件 - 比如您的测试结果等 - 如果文件已更新则重置文件并提取最新更改如果它们已更新。 这可确保工作区处于与您在全新的空目录中克隆和 check out 时相同的状态。它只下载可能只有几 MB 的增量。因此耗时较少。

因此您可以在不影响构建的情况下继续使用Clean before checkout。 已使用此选项超过 4 年,没有任何问题。

关于git - jenkins 在 checkout 前清除存储库并强制克隆 vs Clean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42305565/

相关文章:

git - merge 后未应用补丁

Git:将一个大+杂乱的特性分支分解成更小的分支

git - 如何显示部分或所有文件之间的差异?地理信息系统

git - SSH 到 Openshift 服务器失败

git 痛苦第 2 部分 : what does it mean when git won't commit, pull 或推文件?

jenkins - 如何根据属性使用 JFrog Artifactory REST API 获取最新的 NuGet Artifactory 版本?

java - Jenkins 构建不会在应该失败的时候失败

jenkins - 使用 jenkins slave 上的 gradle git 插件获取 git 分支名称

java - Jenkins 无法构建 Maven 项目

jenkins - 在 Jenkins 中定义选择性阻止上游/下游作业