代码之家  ›  专栏  ›  技术社区  ›  Alex Cohen

concourse,如何使用所有远程分支拉git回购

  •  0
  • Alex Cohen  · 技术社区  · 7 年前

    我已经尝试了以下不下载所有远程分支的选项:

    https://github.com/vito/git-branches-resource

    https://github.com/cloudfoundry-community/git-multibranch-resource

    root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git fetch
    root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git branch -r
      origin/HEAD -> origin/master
      origin/master
    root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git fetch --all
    Fetching origin
    root@e17c8b62-a8ac-4572-5e8f-d880c815ddff:/tmp/build/6bbb901a/my-repo# git branch -r
      origin/HEAD -> origin/master
      origin/master
    

    仅供参考,这是我要查找的信息:

    $ git branch -r
      origin/HEAD -> origin/master
      origin/asdf
      origin/master
      origin/test
    

    我不能像我想的那样运行额外的pull命令,因为我想对私有repos运行这个命令,并且不想将ssh密钥插入concourse。

    我确实注意到了。回购中的git/config被设置为单个分支,这意味着它是 configured for remote tracking :

    [origin]
    fetch = +refs/heads/master:refs/remotes/origin/master
    

    fetch = +refs/heads/*:refs/remotes/origin/*
    

    一种选择是在作业中使用sed命令进行修复:

    cat .git/config | sed -e  's/master/*/g' > .git/config
    git fetch --all
    
    git branch -r
      origin/HEAD -> origin/master
      origin/asdf
      origin/master
      origin/test
    

    4 回复  |  直到 7 年前
        1
  •  2
  •   Alex Cohen    7 年前

    这是添加到所有远程分支中的正确fetch命令:

    git fetch origin '+refs/heads/*:refs/remotes/origin/*'

        2
  •  0
  •   hspandher    7 年前

    git fetch ,它会自动执行此操作。

        3
  •  0
  •   gdenn    7 年前

    git fetch 您需要执行几个步骤:

    • 将有效的git私钥传递给容器并将其放入~/。ssh/id\u rsa

    • 将github主机指纹添加到~/。ssh/config&chmod 0600

    • 设置github全局配置 git config user.email "${GIT_USER_EMAIL}" git config user.name "${GIT_USER_NAME}"

        4
  •  0
  •   Rolo    7 年前

    只需在任务中复制/粘贴下面的代码。yml文件

    ---
    platform: linux
    image_resource:
      type: docker-image
      source: {repository: alpine/git}
    run:
      path: sh
      args:
      - -exc
      - |
        git clone https://github.com/octocat/Hello-World.git
        cd Hello-World
        git branch -r
    

    执行方式:

    fly -t local execute -c task.yml
    

    如果将回购作为输入传递,则可以跳过“git克隆”步骤。

    您可以将其保留在任务文件中,或者在出现预期行为时将此配置移动到管道中。