我有一个正在开发的Web应用程序,并将其用作源代码管理。该应用程序由具有不同域的多个客户端使用。它有一个我在本地计算机上称为web
的文件夹。但是,该文件夹在服务器上称为DOMAIN.NAME
,并且当然在服务器之间会发生变化。
现在,当我必须使用最新代码更新服务器时,我进行SSH并执行git pull
,该操作将提取服务器上的web
文件夹,然后将其重命名为相应的{{1} }对应的服务器。但是,我想知道是否可以通过某种方式使此过程自动化?我是否可以拥有一个脚本/命令,Git可以执行该脚本/命令来为我重命名文件夹,甚至更好,可以从服务器上存储的文件中读取变量并将相应的文件夹命名为该值?我能以某种方式创建将DOMAIN.NAME
连接到每个服务器上文件夹的相应名称的映射吗?
任何想法都非常受欢迎,谢谢!
答案 0 :(得分:2)
您可能对git钩子感兴趣,这些钩子可以在诸如commit,pull,push等事件之前或之后运行: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
答案 1 :(得分:1)
我收集的web
文件夹是您的存储库所包含的更广泛目录结构的一部分。 (如果没有,您可以将每个服务器的克隆都移到适当的目录;但是我想您会自己想出来的。)
因此,最轻量的选项是在每台服务器上将DOMAIN.NAME
设为指向web
的符号链接。 (我假设服务器使用* NIX风格的操作系统和文件系统。)
如果由于某些原因不可行,您可以查看git hooks。