我有一个Web应用程序,我正在开发并使用GIT作为源代码控制。该应用程序由具有不同域的多个客户端使用。它有一个文件夹,我在本地机器上调用了web
。但是,同一个文件夹在服务器上称为DOMAIN.NAME
,当然,它从服务器更改为服务器。
现在,当我必须使用最新代码更新服务器时,我SSH并执行git pull
,它在服务器上提取web
文件夹,然后将其重命名为相应的DOMAIN.NAME
,对应于相关服务器。但是,我想知道是否有可能以某种方式自动化这个过程?我可以使用Git可以执行的脚本/命令来为我重命名文件夹甚至更好,从存储在服务器上的文件中读取变量并将相应的文件夹命名为该值吗?我可以以某种方式创建映射,将web
连接到每个服务器上的文件夹的相应名称?
任何想法都非常欢迎,谢谢!
您可能对git hooks感兴趣,可以在提交,拉取,推送等事件之前或之后运行的脚本:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
这是一个git钩子的例子,如果有空格错误就会停止提交,来自https://www.atlassian.com/git/tutorials/git-hooks#local-hooks
#!/bin/sh
# Check if this is the initial commit
if git rev-parse --verify HEAD >/dev/null 2>&1
then
echo "pre-commit: About to create a new commit..."
against=HEAD
else
echo "pre-commit: About to create the first commit..."
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# Use git diff-index to check for whitespace errors
echo "pre-commit: Testing for whitespace errors..."
if ! git diff-index --check --cached $against
then
echo "pre-commit: Aborting commit due to whitespace errors"
exit 1
else
echo "pre-commit: No whitespace errors :)"
exit 0
fi
我收集web
文件夹是您的repo包含的更广泛的目录结构的一部分。 (如果没有,您可以将每个服务器的克隆移动到相应的目录;但我认为您已经自己想出了它。)
因此,在每台服务器上,最轻量级的选项是使DOMAIN.NAME
成为web
的象征性链接。 (我假设服务器使用* NIX风格的操作系统和文件系统。)
如果由于某种原因不可行,你可以查看git hooks。