Linux Git推送将并行副本发送到测试服务器

Linux Git推送将并行副本发送到测试服务器,linux,git,Linux,Git,当我启动“gitpush”命令时,我搜索将文件复制到“test”主机的方法 Git版本:2.20.1听起来你在试图(重新)发明CI/CD。 如果您将GitHub或GitLab用作远程服务器,则可以使用GitHub中的管道(或操作)。 在那里,您可以定义(几乎)推送后想要发生的任何事情,我假设您的Host\u测试可以在线访问 如果您正在运行自己的git服务器 您可以使用post-receivehook实现“推送部署”。钩子是放置在.git/Hooks中的脚本,在git命令的精确阶段执行。您可以在.

当我启动“gitpush”命令时,我搜索将文件复制到“test”主机的方法


Git版本:2.20.1

听起来你在试图(重新)发明CI/CD。 如果您将GitHub或GitLab用作远程服务器,则可以使用GitHub中的
管道
(或
操作
)。 在那里,您可以定义(几乎)推送后想要发生的任何事情,我假设您的
Host\u测试可以在线访问

如果您正在运行自己的git服务器
您可以使用
post-receive
hook实现“推送部署”。钩子是放置在
.git/Hooks
中的脚本,在git命令的精确阶段执行。您可以在
.git/hook
中找到几个示例实现。有关更多信息,请参见此处:

以防您无法访问自己的git服务器
您可以在本地计算机上使用
预推
脚本,但这不是一个好主意
这个钩子是在执行
gitpush
之后执行的,但是在
git
实际推送任何东西之前执行的。如果脚本失败(即非零返回代码),它将不会推送。 另外,如果您的脚本成功地进行了复制,但随后
git
推送失败,那么您将最终测试不在repo中的代码

如果这一切听起来太复杂了
您可以创建一个同时执行这两种操作的bash函数,并将其添加到
.bashrc

以下是一个例子:

push_copy() {
   if git push
   then 
      # Copy for command here: scp ...
   else
     echo "Failed..."
   fi
}
REPO_服务器
上使用一个或在
测试
服务器上创建一个裸REPO。这称为推送部署:。这样地:
push_copy() {
   if git push
   then 
      # Copy for command here: scp ...
   else
     echo "Failed..."
   fi
}