【问题标题】:Publish git repository to remote http server将 git 存储库发布到远程 http 服务器
【发布时间】:2011-02-28 14:26:22
【问题描述】:

我在一个 git 存储库上工作,我们在其中建立了一个 php 社区,但我需要在某个地方展示它,所以我正在寻找一种方法来在我推送到存储库时自动将我的文件上传到远程 http 服务器。

谢谢/维克多

【问题讨论】:

    标签: php git automation github httpserver


    【解决方案1】:

    像 Subversion 一样,Git 也提供了挂钩机制。查看githooks 手册页。基本上,您只需要为您的 PHP 应用程序编写一个签出和部署脚本作为提交后挂钩。

    对于 github,你应该看看他们的 webhooks 机制。

    【讨论】:

    • 请解释更多。感谢您的快速回答。
    • 好吧,如果你使用自己的 git 存储库,你可以编写将在特定事件(例如签出后、预提交、提交后)发生后执行的 shell 脚本。然后,该 shell 脚本只需要将存储库签出到您要运行它的服务器。 Github(你用它标记了这个问题)使用了一种类似的机制,称为 webhook,它调用某个 URL 而不是 shell 脚本。
    • 哦,现在我明白了,非常感谢您的详细解释和快速响应!
    【解决方案2】:

    如果第二台服务器上没有单独的 git repo,我会从存档中导出文件:

    git checkout-index -a -f --prefix=/target/path/
    

    然后使用sftp与远程服务器同步:

    #!/bin/bash
    HOST="ftp.example.com"
    USER="user"
    PASS="pass"
    LCD="/var/www/yourdir"
    RCD="/www/"
    lftp -c "
    #debug;
    open ftp://$USER:$PASS@$HOST;
    lcd $LCD;
    cd $RCD;
    mirror --only-newer \
           --reverse \
           --verbose \
           --exclude-glob somepattern ";
    

    您可以将此过程自动化为构建脚本(例如 Phing), 我们的绑定作为提交后的 git 钩子,就像之前提到的那样。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 2016-12-16
      • 2010-12-31
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多