我的网站上有很多大图片文件。源(以及图像)由git维护。我希望通过ftp将其部署到类似bluehost的廉价服务器上。

我不想每次都部署所有网站(这样我就不必一遍又一遍地上传太多未更改的文件),而是大致执行以下操作:

  • 在git存储库中,使用标签“deployed”标记最后部署的修订版。
  • 当我说“部署修订版X”时,找出哪些文件在修订版X和标记为deploy的修订版之间发生了更改,然后仅上传它们。

  • 它在本质上类似于svn2web。但是我想要DVCS。 Mercurial 替代品将被考虑。

    这是一个非常简单的脚本,但是如果网络上有一些类似的脚本,我宁愿不要重新发明轮子。

    Capistrano和fab似乎只知道如何在SCM集成中 push 整个修订。因此,我认为目前无法使用它们。

    最佳答案

    git-ftp脚本可能就是您想要的。它采用更改本地git存储库,并将其通过ftp同步到远程git repo。

    我通过托管使用--bare option创建的git repo来使用它。把它放在我的ftp服务器上。

    比运行./git-ftp.py它提示输入ftp用户名,密码,ftp主机,本地git repo路径,远程git repo路径(裸存储库的位置)。

    然后,它连接到ftp git repo,然后单独发送差异。 (它使用git-python库获取所需的信息)。

    该脚本几乎没有问题。似乎总是提示输入用户名详细信息,我不得不注释掉第68行。

    #ftp.voidcmd('SITE CHMOD 755 ' + node.name).
    

    但是那些事情可以很容易地解决。

    替代

    如果您使用的是Nix平台,则可以选择使用curlftpfs。它会将您的ftp帐户挂载为设备目录,从中可以执行所有常规git操作(推, pull )。当然,此解决方案不是特定于git的。

    您需要在FTP上共享的存储库上使用上述提到的裸选项,然后运行
    通过FTP共享存储库之前,在存储库中添加git update-server-info

    警告:如果您打算让多个用户写入您的git仓库,这不是一个好主意。由于FTP没有锁定访问的机制。您将得到一个损坏的存储库。在投入生产之前进行测试。

    关于git - 使用git将网站的仅更改部分部署到ftp(git的svn2web),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/865722/

    10-13 07:14
    查看更多