我一直只是从网站上下载FTP文件,编辑它们并在创建网站时将它们备份,但觉得值得学习正确的事情。
我刚刚将所有内容提交到SVN repo,并尝试将sshing放入服务器并检出标记的版本,以及使用switch更新该版本。
一切都很好,但它比我目前的流程要快很多。
设置这样的东西最好的方法是什么?我的大部分时间只是错误修复或小改动,而不是大的重写,所以我经常更新东西。
答案 0 :(得分:8)
您不一定需要使用SVN将文件部署到服务器。继续使用FTP,只需使用SVN进行修订历史记录。
答案 1 :(得分:3)
您应该查看安装rsync以将更改上传到您的服务器。
Rsync非常棒,因为它将您的本地副本副本与当前服务器上的副本进行比较,然后只发送已更改的文件。
这可以节省您必须记住您更改的每个文件并手动选择它们到FTP,或者必须再次将整个本地副本上传到服务器(并让FTP进行比较)。
Rsync还允许您在服务器之间同步时排除文件/文件夹(即.svn /文件夹)。
答案 2 :(得分:3)
我建议您继续使用Subversion来跟踪所有更改,甚至错误修复。如果要部署到生产服务器,则应使用SSH并调用svn update
。此过程可以使用Capistrano自动执行,这意味着您可以坐在本地方框中并致电cap deploy
- Capistrano将通过SSH连接到您的服务器并执行Subversion更新。节省了大量繁琐的手工劳动。
答案 3 :(得分:2)
为了快速更新,我只需从服务器运行svn update
。
有时为了真正快速更新,我使用vim编辑文件并从服务器提交它们。
这不是很合适,但很快且非常可靠。
答案 4 :(得分:1)
如果要正确执行此操作,您一定要考虑设置本地SVN存储库。我还强烈建议设置一个连续集成(CI)服务器,例如巡航控制,当您登录svn时,它会自动运行针对PHP代码的任何测试。一旦通过测试,您的CI服务器也可用于通过FTP将文件发布到主机上,只需点击一下按钮即可。
虽然这听起来像是很多工作,但实际上并非如此,从长远来看,顺利部署过程的好处不仅仅是为自己付出代价。
答案 5 :(得分:1)
对于我的项目,我通常有一个回购。在我的笔记本电脑上是一个工作副本,实时网站是一个工作副本。我使用本地网络服务器在本地副本上进行更改。当所有内容都经过测试并准备就绪时,我会提交更改,然后我会进入远程服务器并进行svn更新。
我还在此存储库中保留一个文件夹,其中包含我对数据库结构所做的任何更改的sql文件,并根据其版本号进行标记。例如,当我提交版本74并且其中一个表中有一些额外的列时,提交中包含的将是dbupdates / rev74.sql。这样,在我进行svn更新后,我只需要运行我的sql文件(mysql db_name -p -u username< dbupdates / rev74.sql),我很高兴。
答案 6 :(得分:1)
如果你想用它来获得真正的时髦,你可以使用构建脚本从SVN获取当前版本,然后使用compile PHP代码,然后在成功构建时自动将更改推送到服务器
这将有助于调试,并可能使您的代码运行得更快。此外,进入构建习惯确实改进了我的编码,只需将PHP直接推送到服务器并通过Firefox进行调试。
答案 7 :(得分:1)
源代码控制的好处在于项目的复杂性和开发人员数量的增加。如果您直接在远程服务器上工作,并且大多数时间只进行快速补丁,那么源代码控制可能不值得为您付出代价。
最好,您应该使用存储库的本地工作副本(这意味着您还应该设置本地服务器)。使用SVN作为更新它的唯一方法来对抗远程服务器会使您的速度大大降低。 话虽如此,使用SVN(或任何其他源代码控制)从长远来看将产生许多好处 - 您有完整的更改历史记录,您始终可以确保服务器是最新的(如果您运行更新)如果您向项目中添加更多开发人员,则可以避免彼此造成代价高昂的源代码覆盖。
答案 8 :(得分:0)
我在工作中做的是使用FTP将更改上传到测试服务器。然后当我完成我正在处理的网站部分时,我提交更改并更新两者。有时,如果我正在处理某些事情并且我在不同的目录中更改了很多文件,我会提交它并更新测试服务器。但我不更新生产服务器。但我是这里唯一的程序员,如果有多个程序员,我不建议提交可能有错误的代码。
答案 9 :(得分:0)
我使用ZendStudio for Eclipse(目前版本为6.1)。我使用SVN保持我的源代码可用。最初我认为由于提交过程(并输入提交注释)并等到它停止,这个过程有点慢。
然而,在得知Ctrl + Alt + C提交并检查“始终在后台运行”之后,该过程根本不会变慢。
另外,我确实在本地运行所有内容,然后在一段时间后只运行SSH。
答案 10 :(得分:0)
我做了一个post-commit钩子来自动更新我的网页。它很快但你可以犯错误。
答案 11 :(得分:0)
IF AND 您拥有相应的SSH访问权限 AND ,您有足够的空间来保留网站的多个副本,< strong> THEN 我发现的最有用的版本控制技术是使用符号链接指向网站的“当前”版本。 (您仍然可以使用SVN来版本化源代码 - 这是一种在服务器上轻松/即时切换网站版本的方法。)
设置网络服务器以指向/whatever.com作为网站的根目录。
有一个像/ website / r1v00这样的文件夹,你将FTP网站文件,然后创建一个名为“whatever.com”的符号链接,指向/ website / r1v00
当您拥有该网站的更新版本时,请创建另一个名为/ website / r1v001的文件夹,FTP更新站点的所有文件,然后将“whatever.com”的符号链接更改为现在指向/ website / r1v01。如果新网站有任何问题,您可以通过简单地将“whatever.com”符号链接指向/ website / r1v00
当然,您可以/应该设置脚本来自动创建和切换符号链接。在我的例子中,我有一个用PHP编写的“管理员”页面,列出了所有可用的版本,并允许我切换到其中任何一个。这种技术已经多次保存我的培根......!
显然,这并未解决版本控制数据库模式或数据库内容的任何问题。