gpt4 book ai didi

git - yarn install 在 git post-receive hook 中克隆 github 包时失败

转载 作者:行者123 更新时间:2023-12-05 04:04:49 25 4
gpt4 key购买 nike

我已经创建了一个 post-receive Hook 来将更改部署到应用程序并通过 Yarn 安装包。它看起来像这样:

#!/bin/sh

echo "Checking out changes..."
git --work-tree=/home/me/apps/app --git-dir=/home/me/repos/repo.git
checkout -f

echo "Yarn install..."
cd /home/me/apps/app
yarn install

注释(有用的东西):

第一部分工作正常。钩子(Hook)肯定在运行。主要应用文件按预期更新。

当通过 ssh 连接到服务器时从命令行执行 yarn install 时,所有包都安装没有问题。 (通过 ssh 进入服务器的用户与推送提交和运行 Hook 的用户相同。)

已检查所有目录是否存在权限问题。

问题:

尝试通过 Yarn 安装包时, Hook 每次 都会失败。具体来说,它在尝试从 Github 安装包依赖项时失败。它确实似乎检索了包(或者至少它没有告诉我检索它们有任何问题),它只是在尝试将它们移动到 node_modules< 时做错了 目录。

我遇到以下两个错误之一:

remote: error Command failed.
remote: Exit code: 128
remote: Command: git
remote: Arguments: pull
remote: Directory:
/home/me/.cache/yarn/v2/.tmp/45d918f2ecb73f845db6f9b2f91617a3
remote: Output:
remote: fatal: Not a git repository: '.'

或者:

remote: error Command failed.
remote: Exit code: 128
remote: Command: git
remote: Arguments: clone https://github.com/Account/package.git /home/me/.cache/yarn/v2/.tmp/45d918f2ecb73f845db6f9b2f91617a3
remote: Directory: /home/me/apps/app
remote: Output:
remote: fatal: Working tree '/home/me/apps/app' already exists

上面的一些包和用户详细信息已经做了一些修改,但是任何与 git 相关的包安装都会失败,但仅限于 post-receive hook。

在第二个错误中,它很奇怪,因为 git 命令似乎表明它正在尝试将 repo 克隆到缓存中,但随后有一条消息表明它正在尝试将包克隆到主应用程序目录中。

我竟然使用钩子(Hook)将package.json复制到一个新目录,cd进去,然后尝试yarn install。产生了同样的错误。

我完全糊涂了。

最佳答案

我不知道 Git 操作使用 GIT_DIRGIT_WORK_TREE 环境变量,因此我设置的变量会干扰 Yarn 的 Git 操作。

解决方案,在yarn install之前取消设置变量:

#!/bin/sh

export GIT_WORK_TREE=/home/me/apps/app

echo "Checking out changes..."
git --work-tree=$GIT_WORK_TREE --git-dir=/home/me/repos/repo.git
checkout -f

echo "Yarn install..."
cd $GIT_WORK_TREE
unset GIT_WORK_TREE
yarn install

关于git - yarn install 在 git post-receive hook 中克隆 github 包时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51996304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com