我有一个具有多个代理(即分布式)的Bamboo CI系统,每个构建都被分配给下一个可用代理;另请注意,同一存储库的不同分支的多个构建可能在同一台机器上同时运行
我的构建需要从远程git存储库检出代码,这就是与git的集成。
目前,构建在每次构建之前克隆存储库(硬性要求),并为同一文件系统上的每个分支保留完整的git存储库(即.git目录)。
由于构建不以任何方式与git交互(例如推,拉),除了检查最新的代码,我想简单地,在lamens术语中,下载给定git分支的最新版本,仅此而已。
非常感谢任何帮助
答案 0 :(得分:2)
我绝不是一个git专家,但也许这个类似的Stack Overflow问题可以帮助你找到正确的方向:
答案 1 :(得分:1)
好的,我就是这样做的:
设定:
git init build_dir
cd build_dir
# repeat for all repositories
git remote add REPO_NAME GIT_REPO_URI
签出特定分支:
git fetch --all # fetch all updates
git fetch REPO_NAME # just fetch one repo
git checkout master
git reset --hard REPO_NAME/repository
偶尔跑步:
git gc --aggressive
答案 2 :(得分:1)
事实证明,当勾选“浅克隆”选项(具有更多很酷的功能,如多存储库计划,结帐任务和git子模块)时,Bamboo 3.4大致遵循Let_Me_Be的建议开箱即用
答案 3 :(得分:1)
git clone -b branchname --depth 1 git@git.example.com:repository.git /path/to/your/repo
这将创建一个所谓的"浅层克隆"。它只包含指定分支的最新提交。因此,你只会拉出绝对必要的位。
--depth <depth>
Create a shallow clone with a history truncated to the specified number
of revisions. A shallow repository has a number of limitations (you cannot clone
or fetch from it, nor push from nor into it), but is adequate if you are only
interested in the recent history of a large project with a long history, and would
want to send in fixes as patches.
编辑: AFAIK git无法&#34;导出&#34;直接从远程目录。但上述方法大致相当于从远程导出。如果您不想要.git
目录,请将其删除。这比在SVN世界中更容易,因为你只有一个,而不是每个疯狂目录中的一个。