用于在 git pull 上创建/添加数据库转储文件到存储库的钩子

发布于 2024-11-13 12:05:40 字数 423 浏览 1 评论 0原文

我的目标是尽量减少本地克隆我的网站+数据库所需的步骤。

我在网络服务器上有一个中央 git 存储库和一个本地克隆。当我在本地计算机上拉取更新时,我不仅应该从远程存储库获取最新的文件版本,还应该在此 Web 服务器上运行脚本来转储实时数据库,并在交付拉取之前将其添加到存储库。

我的猜测是,当我在交付存储库之前在本地计算机上触发 git pull 时,我需要在远程计算机上执行以下操作:

  • 创建数据库转储文件,例如 dump.sql (通过执行 mysqldump)
  • 将 dump.sql 添加到存储库
  • 将 dump.sql 提交到存储库

……然后才将拉取传递到本地计算机。

我应该为此使用什么样的 git hook? 我也很感激任何有关这种情况的额外经验。

My aim is to minimize the steps needed to locally clone my website + database.

I have a central git repository on a webserver and a local clone. When I pull updates on my local machine, not only should I get the latest file versions from the remote repository but also should a script run on this webserver to dump the live database and additionally add it to the repository prior to delivering the pull.

My guess is that I need the following actions to happen on the remote machine when I fire git pull on the local machine prior to delivering the repository:

  • Create database dump file, e.g. dump.sql (by exectuting mysqldump)
  • Add dump.sql to repository
  • Commit dump.sql to repository

… and only then deliver the pull to the local machine.

What kind of git hook should I use for this?
I'd also appreciate any additional experience with such a scenario.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风疏影 2024-11-20 12:05:40

git help hooks 列出了钩子的类型以及它们如何工作,但是没有一个钩子可以用来做你想做的事情(你需要类似 pre-upload< /code> 将由 git-upload-pack 执行)。

但是,您可以在服务器上围绕 git-upload-pack 创建一个包装器脚本,该脚本执行必要的操作,然后执行真正的 git-upload-pack 命令:

  1. 找到git-upload-pack 可执行文件
  2. 将其重命名为 git-upload-pack.real
  3. 某处创建一个名为 git-upload-pack 的新脚本code>PATH 执行以下操作:
    1. 使用参数查找 Git 存储库
    2. cd 进入 Git 存储库
    3. 如果 hooks/pre-upload 存在并且是可执行文件:
      1. 运行它
      2. 如果挂钩以非零状态退出:
        1. 将错误消息打印到标准错误
        2. 以非零返回值退出
    4. 使用原始命令行参数运行git-upload-pack.real
  4. 创建一个 hooks/pre-在你的 Git 存储库中上传 脚本,它可以执行你想要的任何操作

git help hooks lists the types of hooks and how they work, but there isn't a hook that you can use to do what you want (you'd need something like pre-upload that would be executed by git-upload-pack).

However, you could create a wrapper script around git-upload-pack on the server that performs the necessary actions and then executes the real git-upload-pack command:

  1. find the git-upload-pack executable
  2. rename it to git-upload-pack.real
  3. create a new script called git-upload-pack somewhere in PATH that does the following:
    1. use the arguments to find the Git repository
    2. cd into the Git repository
    3. if hooks/pre-upload exists and is an executable file:
      1. run it
      2. if the hook exited with a non-zero status:
        1. print an error message to standard error
        2. exit with a non-zero return value
    4. run git-upload-pack.real with the original command-line arguments
  4. create a hooks/pre-upload script in your Git repository that does whatever you want
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文