【发布时间】:2015-03-11 15:50:02
【问题描述】:
我的任务是维护一个 Jenkins 服务器,该服务器的工作基本上是检查一些代码并构建它。目前,他们使用“--depth 1”和“-b {branch}”选项进行 git clone,以尽快获得特定的代码分支。但这仍然很浪费,因为每次执行作业时都会(通过网络)签出新副本,即使更改很少(如果有的话)。
相反,我想做的是在构建机器上拥有一个共享的本地存储库,它是我们远程存储库的克隆。每个作业都会在特定分支上执行“git pull”以从远程存储库中引入任何更改,然后在开始构建之前将源代码树从存储库复制到其 Jenkins 工作区。
这是个坏主意吗?
我担心的是,针对同一代码分支的不同作业可能会同时运行,这可能会导致并发“git pull”请求。
这会导致 Git 的元数据损坏吗?
其中一个并发拉取是否可能由于锁定问题而失败?
共享的本地存储库永远不会有任何更改提交给它,也不会从它推送到远程存储库。可以这么说,这将是“仅拉动”。所有的拉取都来自同一个用户,所以不应该有任何文件权限问题。
一些谷歌搜索从 4 年前发现了这个讨论,但似乎没有结论:
http://git.661346.n2.nabble.com/concurrent-fetches-to-update-same-mirror-td5893458.html
【问题讨论】:
标签: git jenkins git-pull git-clone