Web开发业务中的公司一直使用FTP作为代码存储库。在几年的存在中没有应用版本控制。
将代码和库迁移到版本控制系统时(我计划使用SVN,这是我作为SVN用户所熟悉的)。
我的计划(现在已经安装了SVN)首先要创建一个目录。开发人员完全不知道版本控制,我可能会在这里使用类似问题的输入,例如Converting a development team from FTP to a Versioning System。然后让开发人员在开始将实际代码,模式和其他配置项置于版本控制之前大约播放(创建/提交/检出/更新/恢复)一周。
除了培训开发人员 - 我应该遵循什么策略,以及我应该面对哪些陷阱?想到的是需要一个脚本在分支时删除.svn条目。
P.S。主持人可以把它放在社区维基下吗?我相当肯定没有“一个完美的答案”;与此同时,这个话题可能会为他人带来价值。
答案 0 :(得分:2)
在您说服那些从未使用过版本控制软件的开发人员之前,您必须准备好回答每个问题,担心并怀疑他们会有什么问题。你会被以下问题所困扰:
您所关联问题的已接受答案是一个良好的开端。你需要证明:
您无法安装版本控制(Subversion或其他)并将其称为一天。人们将会回归旧的方式,因为它更容易(它可能不是,它只是他们习惯的)。你需要掌握源和源;配置管理和设计流程以支持您的工作流程以及跟踪要求。
您已经拥有至少两个完全独立且不同的环境(开发和生产),最好是三个(开发,分期和生产),对吧?如果没有,从那里开始。 人们不应随意对实时网站进行更改!如果可能,开发人员应该能够直接从他们的工作站运行他们的项目,以便他们可以在签入之前进行测试。
您的应用程序应完全自我配置。也就是说,每次将它们部署到给定环境中时,您都不需要手动操作它们。部署应该或多或少地“放手”#34;或至少编写脚本。完成设置后,您将需要自己的脚本,持续集成系统或两者的组合来处理部署。
您可以use a post-commit hook script在开发环境中更新您的网站。因此,只要开发人员提交更改,他们就会去开发站点进行查看。
我自己的设置是:
我的CCNET配置也存储在Subversion中并通过CCNET部署,因此我们不必直接触摸服务器上的文件 - 我们更新,提交和触发"构建"它将更新的配置下拉到该服务器。
所有标签为我提供了什么?
其他工具,例如RedGate的Deployment Manager,可以使这更加自动化。
为了使所有这一切发挥作用,你需要有一个坚实的,商定的过程,每个人都遵循。拥有强大的separation of duties也是有益的 - 您的开发人员不应该进行部署,而且您的管理员不应该在代码中捣乱。
好的,所以你已经完成了所有这一切,每个人(包括管理层!)都表示他们已经开始了,接下来会怎样?
取消对所有开发人员的非开发服务器的访问权限。不再有FTP,没有更多的shell, 没有 。如果你有一些日志,也许只读一些日志。
他们会发牢骚。他们会畏缩。他们会生你的气。 "你取消了我所有的访问权限!" "你正在困扰我!" "这将花费我10倍的时间进行简单的改变!" "你是一个怪物!" "你让撒旦看起来像个好人!"无所谓。只要有更简单的方法,就会忽略正确的方法。这就是为什么你需要船上管理和观察你的背景。
由于实时流量的负载太大,第一次某些东西投入生产并导致数据库服务器关闭,您将恢复到之前版本的应用程序,并且事情将在5分钟后恢复正常。你将成为英雄。
你说你需要在剥离之前删除.svn条目"对我来说是一种担忧。你要么描述你的过程不好,要么你做错了。
编辑:记住别的东西。您的存储库有备份策略,对吧?如果没有,并且驱动器因数据丢失而失败,一切都将归咎于您和Subversion,而不是故障硬件(尽管硬件故障可能发生在任何地方)。