仅使用git将网站的已更改部分部署到ftp(对于git为svn2web)

Ela*_*ich 9 git deployment version-control mercurial

我有一个包含许多大图像文件的网站.使用git维护源(以及图像).我希望通过ftp将其部署到类似bluehost的廉价服务器上.

我不希望每次都部署所有网站(这样我就不必一遍又一遍地上传太多未更改的文件),但大致如下:

  1. 在git存储库中,使用标记"已部署"标记上次部署的修订.
  2. 当我说"部署修订版X"时,找出哪些文件在修订版X和标记为部署的修订版之间发生了变化,并且只上传它们.

它在精神上类似于svn2web.但我想要DVCS.将考虑Mercurial替代方案.

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

Capistrano和fab似乎只知道如何在他们的SCM集成中推动整个修订版.所以我认为我目前不能使用它们.

Pra*_*eep 6

GIT-FTP脚本可能是你在找什么.它需要更改本地git存储库并将其同步到ftp上的远程git仓库.

我通过托管使用--bare选项创建的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).
Run Code Online (Sandbox Code Playgroud)

但这些事情很容易解决.

替代

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

您需要在FTP上共享的repo上使用上面提到的bare选项,并在repo中运行 git update-server-info,然后再通过FTP共享它.

警告:如果您计划让多个用户写入您的git仓库,这不是一个好主意.由于FTP没有LOCK访问机制.你最终会得到一个腐败的回购.在投入生产之前进行测试.


小智 6

我创建了一个名为git-deploy的脚本,希望它有所帮助.