代码之家  ›  专栏  ›  技术社区  ›  Mohsen Mirhoseini

当子模块更新时,如何强制我的主回购更新?

  •  1
  • Mohsen Mirhoseini  · 技术社区  · 7 年前

    我有一个git repo,它由来自不同repo的多个git子模块组成(我有权应用有关CI或挂钩的任何更改)

    我的问题是,我的主回购协议如何自动更新,并在提交时从我的子模块主分支获得最新的更改?

    我们不为这个特定模块使用包管理器的原因是我们需要源代码,并且我们与主repo代码同时进行编译。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Mohsen Mirhoseini    7 年前

    经过两天的研究,试图找到一个解决方案,并记住使用包管理器可能是最好的解决方案,我最终得出了这个结论 .gitlab-ci.yml

    android:
      stage: deploy
      script:
        - cd ~
        - mkdir .ssh
        - echo SSH_KEY_TO_ACCESS_GIT > ~/.ssh/id_rsa
        - chmod 600 ~/.ssh/id_rsa
        - eval `ssh-agent -s`
        - ssh-add ~/.ssh/id_rsa
        - ssh-keyscan -t rsa YOUR.GIT.com > ~/.ssh/known_hosts
        - git config --global user.email "ci@yourhost.com"
        - git config --global user.name "CI"
        - git clone --single-branch -b develop git@git.YOUR_REPO.git
        - cd YOUR_REPO_FOLDER
        - git submodule init
        - git submodule update
        - cd YOUR_SUBMODULE_FOLDER
        - git fetch --all
        - git reset --hard origin/master
        - cd ..
        - git add .
        - git commit -m "Update YOUR SUBMODULE automatically to latest"
        - git push origin develop
      only:
        - master
    

    请记住,您需要向您的帐户添加ssh密钥,以允许CI推送到您的回购中。

    我仍然愿意接受任何更方便的建议。

        2
  •  0
  •   Nicolas Voron    7 年前