2012-03-14 104 views
1

我有一个具有多个代理(即分布式)的Bamboo CI系统,每个构建被分配到下一个可用代理;还要注意同一个存储库的不同分支的多个版本可能在同一台机器上同时运行
下载最新版本的特定GIT分支+没有本地存储库

我的构建需要从远程git存储库签出代码,并且就git的集成而言。

当前构建在每次构建(硬性需求)之前克隆存储库,并为同一文件系统上的每个分支保留完整的git存储库(即.git目录)。

由于构建不以任何方式(例如推,拉)与git进行交互(除了检查最新的代码),我只想简单地用lamens的术语来下载最新版本的给定git分支, 。

希望得到任何援助

回答

1

OK,这是我会怎么做:

设置:

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 
+0

感谢您的迅速反应,但我希望尽可能减少对文件系统和CPU的影响,只需检索实际源代码而不创建任何本地存储库 – 2012-03-14 14:55:15

+0

@GuySegev我编辑了我的答案。 – 2012-03-14 15:24:22

+0

谢谢你,但我真正想要的是没有任何git存储库的代码,类似于svn export – 2012-03-15 07:14:14

2

我决不是一个git的专家,但也许这类似的堆栈溢出的问题将帮助一点,你在正确的方向:

Do a "git export" (like "svn export")?

+0

感谢您的迅速回复,我已经尝试存档,但我试图调查替代方案 – 2012-03-14 14:59:04

1

事实证明,竹子3.4大致如下Let_Me_Be的建议开箱即用打勾“浅克隆”选项(其中有更多的很酷的功能,如多库计划,结账任务和git子模块)

+0

以及正是这里所需的东西当[配置Git源代码库](https://confluence.atlassian.com/display/BAMBOO/Git)时,浅层构建也是默认构建。 – Joe 2014-06-09 06:52:33

1
git clone -b branchname --depth 1 [email protected]:repository.git /path/to/your/repo 

这将创建一个所谓的“浅克隆”的时候。它只包含命名分支的最新提交。因此,你只会拉动绝对必要的位。

要从git clone man page举:

--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的不能直接从远程目录 “出口”。但上述方法大致相当于从远程输出。如果您不想要.git目录,只需将其删除即可。这比SVN世界容易得多,因为你只有一个,而不是每个怪异目录中都有一个。

相关问题