linux - Git push 发送并行副本到测试服务器
问题描述
当我启动“git push”命令时,我搜索将文件复制到“测试”主机的方法。
git push ------- TO REPO --> REPO_SERVER
\
\_________ TO DIR --> Host_TEST
Git 版本:2.20.1
解决方案
听起来您正在尝试(重新)发明 CI/CD。如果您使用 GitHub 或 GitLab 作为远程服务器,您可以使用Pipelines
(或Actions
在 GitHub 中)。在那里,您可以定义(几乎)您想要在推送后发生的任何事情,我假设您Host_TEST
可以在线访问。
如果您正在运行自己的 git 服务器,您可以使用钩子
实现“推送部署” 。post-receive
钩子是放置在内部.git/hooks
并在 git 命令的精确阶段执行的脚本。您可以在.git/hook
. 有关更多信息,请参见此处:使用 git 设置推送部署
如果您无权访问自己的 git 服务器,
您可以pre-push
在本地机器上使用脚本,但这是个坏主意
这个钩子在您执行之后执行git push
,但在git
实际推送任何内容之前执行。如果您的脚本失败(即非零返回码),它将不会推送。此外,如果您的脚本设法复制但git
未能推送,您最终将测试不在您的存储库中的代码。
如果这一切听起来太复杂
了,您可以创建一个 bash 函数来执行这两项操作并将其添加到您的.bashrc
.
这是一个例子:
push_copy() {
if git push
then
# Copy for command here: scp ...
else
echo "Failed..."
fi
}
推荐阅读
- oracle - 如何将多个结果连接到oracle中的一列?
- c# - 如何使用按钮更改表单的背景颜色
- plot - 为什么 Mathematica 显示一个空白框?
- php - PHP Singleton 作为 HTTP 服务器中 HTTP 请求的回调
- python - Python:将数据从 excel 转换为饼图
- android - Firestore Stripe 错误“无法序列化对象。不支持序列化集合,请改用列表。”
- android - HttpURLConnection 间歇性返回错误代码 500
- scala - 使用不同的设置两次运行 sbt 任务
- node.js - 带有令牌的 PASSPORT GOOGLE OAUTH2
- node.js - 使用快递的 POST 请求