首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在一个预提交的钩子里运行流浪汉ssh?

为什么我不能在一个预提交的钩子里运行流浪汉ssh?
EN

Stack Overflow用户
提问于 2016-11-22 09:43:23
回答 1查看 572关注 0票数 2

我有一个非常基本的pre-commit-hook,其中包含以下代码:

代码语言:javascript
复制
#!/usr/bin/env bash
vagrant ssh -c "/var/www/public/tests.sh"

但是,每当我尝试提交时,我都会得到以下信息:

代码语言:javascript
复制
.git/hooks/pre-commit: line 2: vagrant: command not found

“流浪者”已经安装,并且正在运行。如果我手动执行该命令,它就会工作,只有当Git试图运行它时,它才会运行。

我已经尝试了以下几种方法:

  • 在我的项目的根目录中添加一个额外的脚本pre-commit.sh,并从预提交钩子中调用它。
  • 在我的预提交钩子中添加了对Vagrant二进制文件的绝对路径,但随后我得到了我的虚拟框没有运行的消息(尽管它正在运行)。
EN

回答 1

Stack Overflow用户

发布于 2016-11-22 10:58:46

预提交使用自己的环境在自己的shell中运行。它不一定共享您的环境,也就是您的路径或当前目录。你需要在你的预提交钩子明确。所以是的,您要么需要指定流浪二进制文件的完整路径,要么必须确保为运行预提交钩子的环境正确设置了路径。

当使用完整路径时,您得到“虚拟框没有运行”消息的原因是,提交钩子没有在与您的Vagrantfile相同的目录中执行。是git存储库根目录中的Vagrantfile。那么我希望它能起作用--参见In a git hook is the current working directory guaranteed to be within the git repository?

如果您的Vagrantfile文件位于其他地方,您有几个选项。您可以设置VAGRANT_CWD并提示Vagrantfile位于何处(请参阅https://www.vagrantup.com/docs/vagrantfile/),或者指定运行框的id:

代码语言:javascript
复制
vagrant ssh <box-id> ...

一个人可以用

代码语言:javascript
复制
vagrant global-status 

来确定这个身份。或者,您只需确保脚本更改为Vagrantfile的目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40738425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档