Git 通过推送到远程服务器传递变量
Git pass variable through push to remote server
我有一个服务器设置为 "production" 远程服务器,它运行 post-recieve shell 脚本来部署站点,或者使用 'hard' 部署主分支。或者 'soft' 将 dev 分支部署到不同的目录。
soft (fast, low resources) - checks out the work-tree to the /dev directory (fast)
hard (slower, more resources) - check out the work-tree to a new '/temp' directory,
copies the non-tracked files from the '/live' directory to '/temp' (can be large)
if successful, renames the '/live' directory to '/live-old'
renames the '/temp' to '/live' and deletes the older '/live-old' directory
有时我只想在主分支推送上做一个 'soft' 部署,如果它像修补程序一样很小,因为很难复制上传等非跟踪文件,并且如果为不同的应用程序执行多个修补程序,似乎会浪费服务器资源。
我可以将变量从我的本地服务器(如 git 配置文件的远程部分)传递到远程服务器以告诉它对 master 分支进行软部署或硬部署吗?
我在想,如果远程服务器知道本地远程名称是什么,我可以知道,或者我可以向远程定义中的 url 添加一个变量,例如:
[remote "production-hard"]
url = ssh://project.git?deploy=hard
fetch = +refs/heads/*:refs/remotes/production/*
[remote "production-soft"]
url = ssh://project.git?deploy=soft
fetch = +refs/heads/*:refs/remotes/production/*
我确定这种方式可能行不通,但希望您能理解我正在尝试做的事情。
此外,请说明这是否真的是不好的做法,我应该使用其他方法。
谢谢。
不,您不能传递额外的变量。
但是您可以评估被推送到的分支名称。
因此,您可以设置一个 post-receive
hook 检查被推送到的分支:
- 推送到
production-hard
→ 执行 hard
部署
- 推送到
production-soft
→ 执行 soft
部署
我有一个服务器设置为 "production" 远程服务器,它运行 post-recieve shell 脚本来部署站点,或者使用 'hard' 部署主分支。或者 'soft' 将 dev 分支部署到不同的目录。
soft (fast, low resources) - checks out the work-tree to the /dev directory (fast)
hard (slower, more resources) - check out the work-tree to a new '/temp' directory,
copies the non-tracked files from the '/live' directory to '/temp' (can be large)
if successful, renames the '/live' directory to '/live-old'
renames the '/temp' to '/live' and deletes the older '/live-old' directory
有时我只想在主分支推送上做一个 'soft' 部署,如果它像修补程序一样很小,因为很难复制上传等非跟踪文件,并且如果为不同的应用程序执行多个修补程序,似乎会浪费服务器资源。
我可以将变量从我的本地服务器(如 git 配置文件的远程部分)传递到远程服务器以告诉它对 master 分支进行软部署或硬部署吗?
我在想,如果远程服务器知道本地远程名称是什么,我可以知道,或者我可以向远程定义中的 url 添加一个变量,例如:
[remote "production-hard"]
url = ssh://project.git?deploy=hard
fetch = +refs/heads/*:refs/remotes/production/*
[remote "production-soft"]
url = ssh://project.git?deploy=soft
fetch = +refs/heads/*:refs/remotes/production/*
我确定这种方式可能行不通,但希望您能理解我正在尝试做的事情。
此外,请说明这是否真的是不好的做法,我应该使用其他方法。
谢谢。
不,您不能传递额外的变量。
但是您可以评估被推送到的分支名称。
因此,您可以设置一个 post-receive
hook 检查被推送到的分支:
- 推送到
production-hard
→ 执行hard
部署 - 推送到
production-soft
→ 执行soft
部署