错误:终端是愚蠢的,但编辑器未设置 - BitBucket Pipeline

Qum*_*ber 5 git bitbucket bitbucket-pipelines

我第一次使用 BitBucket Pipelines 通过 SSH 连接到开发服务器,并git pull origin branch在推送到上述分支时执行。这很简单,一切都按预期进行。当合并伴随着 pull 出现并且需要用户输入来提交合并时,就会出现问题。我在失败的构建日志中收到以下消息:

 * branch              feature/development -> FETCH_HEAD
d2c27a5f..63d74c8f  feature/development -> origin/feature/development
error: Terminal is dumb, but EDITOR unset
Not committing merge; use 'git commit' to complete the merge.
Run Code Online (Sandbox Code Playgroud)

我只想绕过这个用户输入要求,在必要时提交并继续。
这是我的构建配置:

image: php:7.1.29

pipelines:
  default:
    - step:
        name: Deploy to dev
        deployment: dev
        # trigger: manual  # Uncomment to make this a manual deployment.
        script:
          - echo "Deploying to dev..."
          - pipe: atlassian/ssh-run:0.2.5
            variables:
              SSH_USER: 'root'
              SERVER: '82.xxx.xx.xx5'
              MODE: 'command'
              COMMAND: 'cd /home/ubuntu/public_html/dev/ && git pull origin feature/development'
         - echo "Deployed!"
Run Code Online (Sandbox Code Playgroud)

我不知道如何实现这一目标。任何提示都会很棒。蒂亚!

bk2*_*204 8

默认情况下,当您进行合并时,Git 会尝试调用编辑器,以便您可以编辑提交消息并以有用的方式扩展提交消息。如果您还没有设置编辑器,Git 默认为vi.

但是,在非交互式设置中,Git 很清楚这vi是行不通的,因为您没有合适的终端,因此它尝试使用EDITOR环境变量,该变量应该能够在哑终端中工作,但未设置。(如果设置了它,它会优先使用它vi。)这就是您收到该消息的原因。

如果您不想要这种行为,您可以将环境变量设置GIT_MERGE_AUTOEDITno,它只会使用默认值,这可能是您想要的。如果你想要不同的东西,你可以用-m选项指定它,或者你可以指定一个脚本来编辑它与EDITOR环境变量。


Qum*_*ber 4

感谢@phd,我能够通过在合并后立即停止提交,然后使用-m选项提供我自己的提交消息来解决这个问题。

git pull --no-commit && git commit -m "Merge"
Run Code Online (Sandbox Code Playgroud)

我还添加了策略-x theirs以确保自动接受传入的更改。添加了更多语句,以确保不会丢失任何本地更改,优先考虑传入的更改而不会发生冲突,并且不会报告误报。
这就是我的配置文件现在的样子:

image: php:7.1.29
pipelines:
    default:
        - step:
            name: Deploy to dev
            deployment: dev
            # trigger: manual  # Uncomment to make this a manual deployment.
            script:
               - echo "Deploying to dev..."
               - pipe: atlassian/ssh-run:0.2.5
                 variables:
                   SSH_USER: 'root'
                   SERVER: '82.xxx.xx.xx5'
                   MODE: 'command'
                   COMMAND: 'cd /home/ubuntu/public_html/dev/ && \
                            git add . &&  \
                            git commit -a -m "local files server commit" && \
                            (echo "OK"; exit 0) || (c=$?; echo "NOK"; (exit 0)) && \
                            git pull origin feature/development -X theirs --no-commit && \
                            git commit -m "Merge" && \
                            (echo "OK."; exit 0) || (c=$?; echo "NOK"; (exit 0))'
               - echo "Deployed!"
Run Code Online (Sandbox Code Playgroud)