@LiS-31

Как подключить зависимый репозиторий с указанием конкретного коммита в Git?

Добрый день.
Необходимо реализовать реализовать контроль конфигурации программы средствами GIT.
Программа состоит из 2х частей: бинарные файлы версии ПО и текстовые файлы конфигурации.
Хочу бинарные файлы подключить к файлам конфигурации в качестве зависимого репозитория, но ни subtree ни submodules не могут ссылаться на конкретную сборку.
Возможно есть какое-то альтернативное решение? Обдумывал использовать shell-скрипт для клонирования git-репо в папку, но для изменения версии придется каждый раз вмешиваться в скрипт. Для хранения использую GitLab, то переменные окружения, к сожалению не подходят.
  • Вопрос задан
  • 282 просмотра
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg
Любые ответы на любые вопросы
но ни subtree ни submodules не могут ссылаться на конкретную сборку.

Вот тут неверное утверждение. Хэш сборки записывается в дерево коммитов родительского репозитария, его можно увидеть
git submodule status
Ответ написан
@LiS-31 Автор вопроса
Если кому-нибудь пригодится в дальнейшем. Решил задачу с помощью GitLab CI\CD.
Код на примере репозитория libgit2.
Так же необходимо добавить проверку на наличие изменений в libgit2, иначе pipline будет падать с ошибкой:
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean


## compile – название процесса, потом увидим его в интерфейса
compile:
  ## stage – этап билда, по дефолтку их три: build, test, deploy.
  ## Для нас в данной ситуации это не критично
  stage: build
  ## переходим к самому крипту
  script:
    - git clone https://your/repo.git --depth 1
    - git clone https://github.com/libgit2/libgit2.git
    - cd libgit2
    - git checkout v1.0.0
    - cd ..
    - rm -r repo/libgit2
    - mv libgit2 repo
    - cd atm_custom
    - git add --all
    - git config --local --replace-all user.email "noreply@yourmail.com"
    - git config --local --replace-all user.name "Gitlab CI"
    - git commit -m '[skip ci]Automated commit for CI'
    - git push https://your/repo.git
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы