用于部署 git 文件夹的外部 shell

Posted

技术标签:

【中文标题】用于部署 git 文件夹的外部 shell【英文标题】:External shell to deploy a git folder 【发布时间】:2011-11-14 08:19:45 【问题描述】:

我在 git 下有“myapp”文件夹。使用了几个分支(master,dev,test,prod,...)。 我想制作一个外部 shell 脚本(不在“myapp”文件夹中的脚本)来将给定的分支部署到 Web 服务器。

如何从外部脚本中选择专用分支?

这个想法是使用类似的东西:

cp -r myapp@dev my_we_folder_path 
# myapp@dev beeing the dev branch of myapp folder

很明显,myapp@dev 不是一个正确的 git 表示法,但是 git 中有没有等价的东西?

【问题讨论】:

***.com/questions/4155144/… 可以帮助:接收后挂钩。 @VonC 谢谢,这看起来很棒!我认为这正是我所需要的。你能回答一下吗? 【参考方案1】:

如 SO 问题“git post-receive hook to update multiple servers”所示,实现该功能的常用方法是通过类似于this one 的接收后挂钩。

我们的想法是,在新提交时,将您的 git 存储库存档并将其提取/rsync 到您需要部署的位置。 正如“git-archive vs. cp”中提到的,这比 cp 一个所有的 git repo 要好。 这与部署平台上没有任何 VCS 功能的做法是一致的,并且只保留在生产环境中运行程序所需的内容。

【讨论】:

【参考方案2】:

您可能想查看我在这里学到的关于将 git 项目安全地部署到远程网络服务器而不将您的 repo 暴露给您的网络服务器的知识:https://***.com/a/18941021/470749

该代码可能会根据您的需要进行修改。

【讨论】:

以上是关于用于部署 git 文件夹的外部 shell的主要内容,如果未能解决你的问题,请参考以下文章

部署路径不适用于中间人部署中的 Git 部署方法

Kubernetes 部署 MongoDB 集群

修改Docker部署gitlab的外部访问地址和端口

type命令的用法

如何使用 shell 遍历外部文件中的行? [复制]

如何判断文件是不是被 git 跟踪(通过 shell 退出代码)?