git - 仅使用 git 将网站的更改部分部署到 ftp(git 的 svn2web)

标签 git deployment mercurial version-control

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

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

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

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

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

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

最佳答案

git-ftp脚本可能是你正在寻找的。它获取本地 git 存储库的更改,并通过 ftp 将其同步到远程 git 存储库。

我通过托管使用 --bare option 创建的 git 存储库来使用它.把它放在我的 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 上共享的 repo 上使用上面提到的 bare 选项并运行 git update-server-info在通过 FTP 共享之前在 repo 中。

警告:如果您计划让多个用户写入您的 git 存储库,这不是一个好主意。由于 FTP 没有锁定访问的机制。你最终会得到一个损坏的 repo 协议(protocol)。在投入生产之前进行测试。

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

相关文章:

mercurial - 在 Mercurial 中查找一行代码的作者

php - Composer 下载整个 .git 存储库目录

java - 如何使用 JGit 删除远程分支

git - 在将文件包含在 .gitignore 中后从过去的提交中恢复文件

ruby-on-rails-3 - Heroku应用程序崩溃(错误H10)

mercurial - TortoiseHg 文件夹比较无法正常工作

svn - 在 Git 分支中跟踪 SVN 存储库

deployment - Netbeans,如何将项目部署(war)文件构建到自定义文件夹中?

asp.net - 我可以在 IIS 5 中自动创建 .NET Web 应用程序/虚拟目录吗?

windows - 同步到闪存驱动器和多台计算机