但是,显然这样做有很多明显的问题。我想将他们转移到版本控制系统(CVS、SVN或任何其他工具),但问题是,我不是他们的高级员工,所以我需要一个奖励来鼓励他们开始使用这个系统。
我需要在他们的机器上建立哪种设置,才能让他们像往常一样编写代码?
我会在我的机器上创建这个设置,然后向他们展示。虽然这有点不寻常,但我已经热衷于改变他们的思维方式,从简单的代码编辑转变为结构化和优雅的开发方式。谢谢。
更新(针对Jonathan Leffler的答案):
- 是的
- 不是
- 是的,他们确实需要
问题:
你(或者他们)是否曾经遇到过灾难,需要恢复到网站的以前版本,但是因为已经损坏而无法恢复?
他们是否使用暂存服务器来测试更改?
他们肯定不会在生产服务器上修改代码而没有任何测试吧?
我怀疑第一个问题的答案是“是的(他们曾经遇到过灾难)”,第二个问题的答案是“否”,而对于第三个问题,我不确定(但是从听起来的情况来看,答案可能是“是的,他们真的这样做了”)。如果我的猜测是正确的,那么我很佩服他们的勇气,并且惊讶于他们从未犯过错误。我从不冒险直接在现场网站上进行更改。
我建议您自己使用版本控制系统或VCS(任何VCS)。解决您所关注的代码中的问题,并开发出使其易于分发的流畅分发方式(可能仍然使用SFTP)以将VCS代码分发到网站。但是还要表明保留先前版本具有其优点-因为您可以恢复谁在何时做了什么。首先,您可能需要下载您需要处理的任何页面(文件)的当前版本,并将该最新版本放入VCS中,然后再开始修改该页面,因为其他人可能已经自上次更新主存储库以来对其进行了修改。您可能还想每天“刮取”文件以获取当前版本-并跟踪更改。您将没有“谁”,也不会确切地知道“何时”(比最近一天更好),也不知道“为什么”,但是您将拥有更改的(累积)“内容”。
在回答问题的评论中,Ólafur Waage澄清说,由于缺乏VCS,他们遭受了灾难。
通常情况下,这会使生活变得更加容易。他们犯了错;他们无法撤消这个错误-他们可能有恼怒的客户,他们应该非常生气。 VCS使从此类错误中恢复变得更加容易。显然,对于任何给定的定制站点,您需要在VCS中提供“正确”或“官方”版本的(中央)备份。我可能会为所有客户选择一个单一的存储库,并使用具有良好分支和合并支持的VCS。这可能在一开始时更难处理(当人们开始使用VCS时),但长期来看可能会产生更好的结果。我认真考虑使用现代分布式VCS之一(例如git),尽管许多人也使用SVN(即使它不是分布式VCS)。
你可以使用Tortoise SVN客户端在本地机器上创建和处理存储库,该存储库位于与您的工作路径不同的文件路径上....
也许尝试为自己设置并使用它一段时间,然后展示给他们看它能够为你做些什么。另一个酷炫的东西可能是在您有权访问的服务器上安装Trac(http://trac.edgewall.org/),或者在自己的开发机器上的某个虚拟机中安装Trac。您可以将Trac映射到您的SVN,并在Web界面中获取SVN更改,您可以向项目经理展示这些更改。也许他会被这种通过Web界面轻松查看代码更改的方式所吸引。当然,您只能使用Apache + SVN模块来完成此操作,但是这种方法更好,因为它提供了通向票务和路线图(里程碑和其他经理可能感兴趣的东西:o))的路径。
无论如何祝你好运:)。至少,在本地机器上使用它来工作,对您来说只有收益。
这里有一个大家都会喜欢的技巧:
我在大多数生产网站中都包含了这个“插件”: 当然,首先需要创建一个有限权限的机器人svn账户,并在服务器上安装svn。
echo(' updating from svn<br>' );
$username = Settings::Load()->Get('svn','username');
$password = Settings::Load()->Get('svn','password');
echo(" <pre>" );
$repos = Settings::Load()->Get('svn' , 'repository');
echo system ("svn export --username={$username} --password {$password} {$repos}includes/ ".dirname(__FILE__)."/../includes --force");
echo system("svn export --username={$username} --password {$password} {$repos}plugins/ ".dirname(__FILE__)."/../plugins --force");
die();
确保你将此代码放在有.htpasswd保护的网站后面,并确保不要从SVN更新“生产设置”。 然后,您只需通过一个HTTP查询即可更新您的整个代码库 :) SVN会自动覆盖文件,没有隐藏的文件或文件夹留下来,非常容易适应更新或还原到特定版本。 现在,您的团队只需要提交到他们的SVN存储库,运行此代码片段在测试环境上进行测试,确保一切正常,然后在生产环境上运行即可 :)
VisualSVNServer和TurtoiseSVN是我使用的两个程序,它们都有良好的文档,并且与Windows Explorer和Visual Studio集成得非常好。
将部署过程作为自动化的“构建”过程的一部分,使得没有开发人员需要担心它。使用“流”将工作保留在开发区域、QA区域和发布区域,然后有自动化流程来部署最新的开发、QA和发布环境。
只需将SVN放在中间。
开发团队将新内容放入子版本控制系统,然后您有一个脚本从svn导出内容并将其发送到Web服务器。
这与他们今天的工作方式非常接近,但是每个小变化都已记录在子版本控制系统中,因此如果遭遇灾难,可以非常快速地回溯所有内容。
/约翰