Скачать последнюю версию определенной ветки GIT + нет локального репозитория - PullRequest
1 голос
/ 14 марта 2012

У меня есть система Bamboo CI с несколькими агентами (то есть распределенными), каждая сборка присваивается следующему доступному агенту; Также обратите внимание, что несколько сборок разных веток одного и того же хранилища могут выполняться одновременно на одном компьютере

Моя сборка должна извлекать код из удаленного репозитория git, и это доходит до интеграции с git.

В настоящее время сборка клонирует репозиторий перед каждой сборкой (жесткое требование) и сохраняет полный репозиторий git (т. Е. Каталог .git) для каждой ветви в одной и той же файловой системе.

Поскольку сборка никак не взаимодействует с git (например, push, pull), кроме проверки самого последнего кода, я хотел бы просто, в терминах ламенсов, загрузить последнюю версию данной ветви git и ничего более.

Буду признателен за любую помощь

Ответы [ 4 ]

2 голосов
/ 14 марта 2012

Я ни в коем случае не эксперт по git, но, возможно, этот похожий вопрос о переполнении стека поможет вам указать правильное направление:

Есть ли "git export" (например, "svn export")?

1 голос
/ 26 марта 2012
git clone -b branchname --depth 1 git@git.example.com:repository.git /path/to/your/repo

Это создаст так называемый "мелкий клон". Он содержит только самый последний коммит указанной ветви. Таким образом, вы будете тянуть только абсолютно необходимые биты.

Цитировать из справочной страницы git clone :

--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, поскольку у вас есть ровно один, а не один в каждом чокнутом каталоге.

1 голос
/ 26 марта 2012

Оказывается, что Bamboo 3.4 примерно следует совету Let_Me_Be «из коробки» при выборе опции «Мелкий клон» (которая имеет гораздо более интересные функции, такие как планы с несколькими хранилищами, задачи проверки и подмодули git)

1 голос
/ 14 марта 2012

ОК, вот как я бы это сделал:

Настройка:

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
...