Git投入生产(FTP)

我想知道是否有一种简单的方法将GIT仓库推入生产环境(在FTP服务器上)? 谢谢

最近添加到Git wiki的一些工具:

由RenéMoser提供的git-ftp是一个用于执行FTP Git方式的简单shell脚本。 使用git-ftp.sh仅将Git跟踪file upload到自上次上载以来已更改的FTP服务器。 这节省了时间和带宽。 即使你使用不同的分支,git-ftp.sh也知道哪些文件是不同的。 没有普通的FTP客户端可以这样做。

git-ftp by Edward Z. Yang是一个用Python编写的简单脚本,用于通过FTP上传Git存储库中的文件,只传输新文件和删除旧文件。

如果你更喜欢GUI,使用SourceTree,你可以很容易地设置一个自定义操作,使用上面提到的git-ftp。 将Git存储库推送到FTP的简要说明(适用于Mac)

在这里输入图像说明

如果你在Mac上并有传输,我会推荐以下的git-tranmit脚本( https://gist.github.com/379750 )。 它使用DockSend只发送最后更新的文件。 如果您不熟悉DockSend,请查看http://www.panic.com/blog/2010/11/15-secrets-of-transmit/

build立:

  1. cp git-transit / usr / sbin /。
  2. cd / usr / sbin
  3. chmod + x git-transmit
  4. 安装下载发送您的实时应用程序
  5. 在你的git仓库中运行git-transmit。

我发现PHPloy是一个很好的工具,可以通过FTP将您的Git提交发送到远程服务器。 它从命令行工作,并用PHP编写(甚至检测子模块中的更改)。

https://github.com/banago/PHPloy

git commit ... phploy -s staging phploy -s production 

完成!

(免责声明:使用一段时间后,我已经贡献了一些代码补丁和改进,使其与Windows兼容。)

严格来说,这不是什么混帐。 然而,如果你的源代码不需要编译或处理,比如说一个完全由html和javascript文件等组成的网站,你可以在你的web服务器上拥有一个repo的克隆,并使用服务器的git pull来保存它是最新的。 请注意,我会configuration您的networking服务器来隐藏git目录等。 这只是安全问题的开始。

如果你有任何types的编译或处理,你应该开始看Ant , Maven , BuildR , SBT等。

这是PHP中的一个脚本,几乎可以自动将git-diff上传到FTP服务器:

http://code.google.com/p/upload-git-diff-with-ftp/

你可以试试FTPloy …

https://ftploy.com

“将更改推送到GitHub或Bitbucket”

“自动将更改部署到您的服务器”

你有一个免费的项目来尝试。 我目前正在使用一个小型的PHP网站,它工作得很好。 网站上的一些错误,但它是一个活跃的项目,至less他们正在努力。

https://www.deployhq.com/

免费的一个项目,它的作品非常好。

这里有一个Ruby脚本 – Ruby通过FTP或SSH进行部署,通过FTP或SSH只上载git仓库中已更改的文件。

正如另一个答案中提到的,这里是Python git-ftp.py脚本 ,它做了类似的事情。

这里是git-ftp的shell脚本版本。

还有一个名为git-deploy的Ruby gem项目,它可以让你使用git push命令通过git远程设置自定义的部署,就像Heroku和Azure服务一样。 对于这一个,你可能需要编写自定义的方法来通过FTP部署,我认为它假定你有SSH访问你的生产服务器。

如果您要将代码投入生产,我build议使用“安装程序”(例如RPM软件包)来安装代码。 这样,它将被标记版本,您将能够利用安装程序包来支持对生产代码的更新。 Git并不是专门为支持生产安装而devise的,它旨在跟踪代码本身的变化。

在任何情况下,build立.RPM(或EXE或其他),你可以将它FTP到生产系统,并像任何其他包一样安装。

把它添加为一个远程的,然后你可以推送到它,但是只是推动代码是不够的,它需要与工作树合并。 最简单的方法是反过来,在服务器上有一个工作树,并获取并合并到该树中。

我正在努力解决这个问题。 我已经想出了一个简单的方法来从各种来源( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH )完成这项工作 。 你可以阅读参考,但没有必要,因为我已经提到了下面的一步一步的过程。

首先:在MAC OS上使用brew安装git和curl

 brew install git brew install curl --with-ssl --with-libssh2 brew install git-ftp 

运行以下命令:

 git clone https://github.com/git-ftp/git-ftp.git cd git-ftp git tag # see available tags git checkout <tag> # checkout the latest tag by replacing <tag> sudo make install 

使用git更新

 git pull git tag # see available tags git checkout <tag> # checkout the latest tag by replacing <tag> sudo make install 

build立

 git config git-ftp.url YourFtpServerName.Net git config git-ftp.user FtpUserName git config git-ftp.password YourPassword 

上传所有文件

 git ftp init 

或者如果文件已经在那里

 git ftp catchup 

工作和部署

 echo "Hello StackOverflow" >> index.txt git commit application/libraries/index.txt -m "I love StackOverflow" git ftp push 

如果有错误:pathspec'index.txt'与git已知的任何文件都不匹配 。 这意味着该文件还没有上演,所以添加文件,然后尝试提交。

 git add application/libraries/index.txt git commit application/libraries/index.txt -m "I love StackOverflow" 

希望这可以帮助。