Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用git子模块foreach的Bitbucket管道_Git_Deployment_Git Submodules_Bitbucket Pipelines_Git Ftp - Fatal编程技术网

使用git子模块foreach的Bitbucket管道

使用git子模块foreach的Bitbucket管道,git,deployment,git-submodules,bitbucket-pipelines,git-ftp,Git,Deployment,Git Submodules,Bitbucket Pipelines,Git Ftp,我想使用git ftp将我的存储库(因为我的客户机的许多托管计划不包括SSH访问)部署到我的登台环境中,WordPress作为子模块包含在其中。这是我第一次尝试使用Bitbucket管道: image: php:7.1 pipelines: branches: master: - step: deployment: staging script: - apt-get update - apt-get -

我想使用git ftp将我的存储库(因为我的客户机的许多托管计划不包括SSH访问)部署到我的登台环境中,WordPress作为子模块包含在其中。这是我第一次尝试使用Bitbucket管道:

image: php:7.1

pipelines:
  branches:
    master:
    - step:
        deployment: staging
        script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp init -vv --user $sftp_user --passwd $sftp_passwd $sftp_path
尽管它没有部署WordPress存储库,而是一个空的占位符文件,但它工作得非常好,并将所有文件传输到我的服务器

正如它所说的,对子模块的支持并不总是有效的,但是有一个解决方法是使用

git submodule foreach git [init|push|catchup]
我尝试了使用Bash手动执行的所有步骤,效果良好:

$ git ftp init --user $sftp_user --passwd $sftp_passwd -vv $sftp_path
$ git submodule foreach 'git ftp init -vv $sftp_user --passwd $sftp_passwd -vv $sftp_path/$path/'
但是,当我尝试将此解决方法应用于我的bitbucket-pipelines.yml时,子模块命令foreach似乎根本不起作用……只测试命令的输出

git submodule foreach 'echo $path'
+ git submodule foreach echo 'echo $path'

  • 有人知道更好的解决方法吗
  • 为什么子模块(+foreach)不工作?还是这样
  • 该命令应该告诉您,Bitbucket的存储库变量是否覆盖/阻止这些变量
    谢谢你的帮助

    关于您问题的第二点:是的,它工作正常,
    +
    行只列出了执行的命令。如果没有显示错误,则执行得很好

    至于第三点,是的,如果设置变量$path,该变量将被bitbucket覆盖,因为这当然会覆盖它。如果不这样做,它应该可以正常工作,但是我在git文档中注意到以下内容:

    请注意,为了避免与Windows上的$PATH冲突,$PATH变量现在是$sm_PATH变量的一个不推荐使用的同义词。此命令将忽略超级项目中定义但未签出的任何子模块

    所以你必须检查它们才能打印出来。当您在本地使用此命令时,我认为子模块已签出,这就是命令在那里工作的原因

    不必在bitbucket管道中检查它们的一个解决方法是使用以下命令:

    git config--file.gitmodules--get regexp path | awk'{print$2}'


    我希望这对您有所帮助

    首先感谢您的回答!:)我在最初的帖子中没有提到它,但我尝试回显$path变量,但在这个过程中没有列出任何内容,
    git子模块foreach…
    似乎也不起作用。我也尝试了$sm_路径-仍然没有。我会检查你推荐的命令事件,虽然我不是专家,也不知道命令到底在做什么。非常感谢!:)不幸的是不是…这并不意味着它本身不工作,但我只是发现了一个更好的工作流使用作曲家。