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立:
- cp git-transit / usr / sbin /。
- cd / usr / sbin
- chmod + x git-transmit
- 安装下载发送您的实时应用程序
- 在你的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服务器:
你可以试试FTPloy …
“将更改推送到GitHub或Bitbucket”
“自动将更改部署到您的服务器”
你有一个免费的项目来尝试。 我目前正在使用一个小型的PHP网站,它工作得很好。 网站上的一些错误,但它是一个活跃的项目,至less他们正在努力。
免费的一个项目,它的作品非常好。
这里有一个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到生产系统,并像任何其他包一样安装。
把它添加为一个远程的,然后你可以推送到它,但是只是推动代码是不够的,它需要与工作树合并。 最简单的方法是反过来,在服务器上有一个工作树,并获取并合并到该树中。
您可以使用http://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem来尝试将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"
希望这可以帮助。