2008-12-28 82 views
6

我在一个小型LAMP开发工作室工作,其中的想法是完成代码并转到列表中的下一个项目。将开发团队从FTP转换到版本控制系统

该团队在Zend Studio 5.5中通过FTP或SFTP连接到Live服务器。他们喜欢的是他们部署代码的速度(因为它只是修改实时代码)。

但当然这是不好的,由于许多明显的原因。

我想将它们移动到版本控制系统(CVS,SVN或任何其他工具),但捕获是,我不是他们的高级,所以我需要一个胡萝卜开始使用它。

我需要在他们的机器上构建什么样的设置,以便像往常一样编码?

我会做的是在我的机器上创建此设置,然后显示它们。

我知道这有点不寻常,但它变成了我的激情,将他们的思维方式从通常的代码黑客转变为结构和优雅。谢谢。

UPDATE(乔纳森莱弗勒的答案):

  1. 没有
  2. 是的,他们真的

问题也,工作室使得该托管集中CMS系统在数百个网站上,他们需要修改个别网站,这些网站应该位于主要组合还是属于他们自己的网站?

+0

第一季度的答案是“是的,他们从未有过灾难”?或者是“是的,他们有可能无法返回的灾难”?对不起,这个问题不明确。 – 2008-12-28 23:54:56

+0

“主存储库中的多个站点”问题的答案是“它取决于”。但是,对于开发人员没有良好VCS的系统来说,我非常不舒服,因为我的站点和我的CMS不是。它必须在VCS之下。 – 2008-12-28 23:57:22

+0

答案是肯定的,他们有灾难。 – 2008-12-29 01:24:02

回答

7

问题:

  1. 你有没有(他们)从来没有在那里你(他们)需要恢复到以前的版本的网站,但不能因为他们打破这一场灾难?

  2. 他们是否使用临时Web服务器来测试更改?

  3. 当然,他们不会修改生产服务器中的代码,而无需在某处进行某些测试?

我怀疑回答第一个是“是(他们有灾难)”,第二个“不”,我毫不犹豫地猜测第三个答案(但是从它的声音,答案可能是“是的,他们真的这样做”)。如果这是正确的,我很佩服他们的虚张声势,并且很惊讶他们从不犯错。我绝不会冒险直接在实时网站上进行更改。

我会推荐你​​自己使用版本控制系统或VCS(任何VCS)。找出你所看到的代码的皱纹,并开发出简单的分布(可能仍然使用SFTP)来将VCS代码分发到网站。但也表明,保留以前的版本有其优点 - 因为你可以恢复谁做什么时。首先,您可能会发现,在开始修改页面之前,您需要下载需要处理的任何页面(文件)的当前版本,并将最新版本放入VCS中,因为其他人可能会修改它,因为它最后在您的主存储库中进行了更新。您可能还想每天对文件进行“刮擦”以获取当前版本 - 并跟踪更改。你不会有'谁',也不是'什么时候'(比最近的一天更好),也不是'为什么',但是你会有(累积的)'什么'的变化。


在回答问题中的评论时,ÓlafurWaage澄清说他们因为缺乏VCS而发生灾难。

这通常会让生活变得更容易。他们疯狂;他们无法消除这种混乱 - 他们可能已经让客户烦了,而且他们本应该非常恼火。 VCS使得从这种错误中恢复起来容易得多。显然,对于任何给定的定制站点,您需要VCS中提供的“正确”或“正式”版本的站点(中央)备份。我可能会为所有客户选择一个存储库,使用对分支和合并有很好支持的VCS。起初处理起来可能比较困难(当人们习惯使用VCS时),但从长远来看可能会带来更好的结果。我认真考虑使用现代分布式VCS(例如,git),尽管很多人也使用SVN(即使它不是分布式VCS)。

+0

感谢您的更新和答复。 – 2008-12-29 04:33:38

2

可以使用乌龟SVN客户端来创建和存储库在本地机器上的其他一些文件路径,然后你的工作路径上的工作....

也许尝试安装和使用,对自己和表演他们在一段时间后可以为你做什么。另一个很酷的事情可能是在你的服务器上安装trac(http://trac.edgewall.org/),如果你有访问权限和特权,或者在你自己的开发机器上的某个虚拟机器上。您可以将trac映射到您的svn并在Web界面中获得svn更改,您可以将其显示给项目经理。也许他会因为他能够通过Web界面轻松看到代码更改而堕落。当然,你可以用apache + svn模块做到这一点,但是这样做更好,因为它提供了一个票务和路线图的路径(里程碑和经理们可能挖掘的东西:o))..

好运无论如何:) 。至少,将它用于在本地机器上工作,因为只有这样做才能带来收益。

+0

喜欢关于trac连接的评论,谢谢。 – 2008-12-28 23:36:59

+0

我喜欢这个软件,一直在看它,并且在2周前刚开始设置它,而我从那时起就是最幸福的人...... :)。简单,有用,易于使用...和0.11.x易于安装。我在不到半个小时的时间里就使用了安装在虚拟机中的干净的debian。 – zappan 2008-12-28 23:41:16

2

您可以在您的本地系统上安装SVN进行演示。有一些工具可以将Zend和Eclipse集成到SVN中。我想除了做一个SVN演示外,你应该给他们介绍一些它带来的好处(可能在演示期间)。

到这个链接的一些想法:Do I Really Need Version Control?

1

奥拉维尔,你提到的“工作室做是对数以百计的网站托管的CMS系统。”这本身可能是你需要的胡萝卜。如果团队经常向这些数百个站点部署更新,那么在版本控制系统内部使用分支可能会使这个过程对每个人都更容易。这可能是一个巨大的节省时间,因此可以激励人们学习版本控制系统。

听起来像这些网站都是相关的 - 同一CMS的定制版本。在这种情况下,除了未定制的CMS产品外,您应该将所有网站放在同一个存储库中。然后,您可以将它们全部配置为同一中央产品的分支。如果您使用单独的存储库,则不容易创建分支以将自定义与主要产品相关联。 (我想你可以与Subversion做,最有可能的人,但它是复杂的,不必要的,如果所有的开发者为同一公司工作。)

0

VisualSVNServer和TurtoiseSVN是两个节目我用,他们都是有据可查,并且与Windows资源管理器和Visual Studio集成得非常好。

0

使部署成为自动构建过程的一部分,因此没有开发人员需要担心。使用'流'来保持开发区域,qa区域和发布区域的工作,然后使用部署最新开发,qa和发布环境的自动化流程。

2

这里有一个技巧,大家一定会喜欢:

包括我这个“插件”在我的大部分生产基地: Ofcourse,你需要为这个第一和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(); 

确保你把这个后面的.htpasswded网站ofcourse,并确保你不会从SVN更新“生产设置”。 Et瞧,您更新您的完整的代码库与一个HTTP查询到您的网站:) SVN自动覆盖文件,没有隐藏的文件或文件夹留下,它很容易适应更新或恢复到特定版本。 现在你所有的团队需要做的就是提交到他们的SVN仓库,在测试环境中运行这段代码,确保一切正常,然后在生产环境中运行它:)

0

只需将SVN放在中间即可。

开发团队把这些新东西放到颠覆中, ,然后你有一个脚本从svn中导出这些东西并将它发送到网络服务器上。

这很接近他们今天的工作方式, 但是在颠覆中记录的每一点变化都是如此,所以如果闪电出现的话,可以及时支持所有的事情。

/Johan