我正在使用包含大量文件的存储库,这需要几个小时才能结账.我正在研究Git是否能够很好地使用这种类型的存储库,因为它支持稀疏检出,但我能找到的每个示例都执行以下操作:
git clone <path>
git config core.sparsecheckout true
echo <dir> > .git/info/sparse-checkout
git read-tree -m -u HEAD
Run Code Online (Sandbox Code Playgroud)
这个命令序列的问题是原始克隆也执行结帐.如果将-n添加到原始克隆命令,则read-tree命令会导致以下错误:
错误:稀疏结账不会在工作目录上留下任何条目
如何在不先检出所有文件的情况下进行稀疏结账?
这是我的管道代码:
node ('master') {
git url: "$GIT_REPO_URL", branch: "$GIT_BRANCH"
echo env.GIT_COMMIT
echo env.GIT_BRANCH
echo env.GIT_REVISION
}
Run Code Online (Sandbox Code Playgroud)
构建结果如下所示:
Started by user anonymous
[Pipeline] Allocate node : Start
Running on master in /var/lib/jenkins/jobs/test/workspace
[Pipeline] node {
[Pipeline] git
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://acme/scm/app.git # timeout=10
Fetching upstream changes from https://acme/scm/app.git
> git --version # timeout=10
> git fetch --tags --progress https://acme/scm/app.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> …Run Code Online (Sandbox Code Playgroud) 我花了checkout scm很长时间才理解Jenkinsfile 中的真正含义(checkout 是一个函数,顺便说一下,scm 是一个默认的全局变量)。
现在我已经理解了它,我想增加scm例如增加特定结帐的超时或设置sparseCheckoutPaths. 这可能吗?如果是这样,如何?
我在GitHub Enterprise中有一个大型仓库,需要在我的Jenkins构建服务器上克隆一个子目录,然后构建该子目录.我正在使用管道脚本并立即拥有此功能:
node {
stage ('checkout') {
git url: 'git@github.devops.mycompany.local:Org/MyLargeRepo.git'
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是克隆 github.devops.mycompany.local:Org/MyLargeRepo/path/to/subproject
我知道我可能需要使用稀疏检出,但似乎无法解决如何在Jenkins管道脚本中配置它.有任何想法吗?