为每个开发人员提供SVN-VC和远程测试服务器的多开发人员安装。最佳做法?

我想就如何满足以下要求的专业开发设置提供一些意见。 几个PHP开发人员(比如PHP) 每个开发人员属于一个组 每个小组都有一名代表任务的团队领导 每个开发人员都在一台Windows 7计算机上运行 并使用NetBeans或Eclipse进行开发 每个开发人员'拥有'一个虚拟测试服务器,在那里他可以运行代码 正在使用的VCS是SVN 有一个临时服务器,产品在发布/部署之前最终会经过测试 我给了一些特定的技术,不要太抽象和b / c我也会对插件等的具体建议感兴趣。 在该设置中,我想到了几个问题。 1)所以每个开发人员都会继续努力    个人分支。 2)该分支在工作副本中签出。 现在......这个工作副本在PC上使用dev的IDE进行本地编辑,并在服务器上执行/测试。 在这种情况下,最好/通常的做法是什么?我的意思是 - 如何在不造成太多开销的情况下在服务器上获取编辑后的代码? 开发人员会在他的本地磁盘上有代码吗?或者让IDE通过隧道或特定协议在远程虚拟服务器上写入会更好吗? 3)每天,开发人员都会将他的工作投入到他的个人分支中,该分支位于中央存储库中。 是否有关于存储库应该位于何处的最佳实践?一个单独的服务器? 4)然后在开发人员完成任务后,他/她或团队负责人将新代码合并到相应的主分支或主干中。 最令人困惑的部分是我在2)和3)之间写的内容。因为到目前为止我只使用本地服务器。例如,具有运行代码的服务器的VM位于共享文件夹中,因此我将能够直接编辑它。当服务器现在实际上是远程时,我不确定如何有效地弥合差距。有效地意味着不必通过FTP手动上传。 欢迎外部资源或书籍推荐。 编辑 我的问题是/准目标是准标准/最佳实践。我认为这几乎是一个标准的开发方案,因此必须有一个“通常”的解决方案。 编辑2 好的...所以让我们尝试一下图片: V是一个或多个开发人员的虚拟测试服务器D. C和C'是两个代码版本。它们应尽可能保持一致。 我想到了两个解决方案: 1:编辑C,然后将其上传到C',然后执行C',然后提交C. 2:没有C存在。 Just C',它是通过一些隧道技术编辑并执行和提交的。 我的胆量告诉我两种解决方案都是半最优的。那么什么是“专业”/最有效/最快/最方便/最无摩擦/最不容易出错/最佳实践/行业标准? 任何问题?     
已邀请:
我相信每个人都有不同的做事方式,但这是我的想法。 “最佳实践”可能是“持续集成”,即每个开发人员都没有自己的分支,但会检入公共开发分支。这迫使他们尽早处理冲突并相互协调,并经常避免主要开发人员在后来管理巨大的火车残骸合并。如果你真的想去那条路,请看看巡航控制。 最好的方法是,如果他们有一个本地的Apache Web服务器和完整的PHP堆栈。您可以使用Zend_Server社区版快速启动并在Windows上运行。大多数标准的PHP代码都可以在Windows和Linux上运行得很好,但是如果你正在进行大量的文件操作或cron job或cli的东西,或者需要memecache等,那么你将遇到不兼容的问题。如果是这样的情况和Linux唯一的东西是咬你,你使用VMWARE或VirtualBox来运行本地linux实例并在其中安装IDE,并确保他们有RAM来处理它。 每个开发人员都需要在Eclipse内部运行一个syncronize,基本上是一个svn更新,处理与其他开发人员当时和那里的任何冲突,进行本地测试并提交他们的更改。 我在svn服务器上设置了一个post_commit挂钩,它在我的Web服务器上调用了/autobuild.php。 autobuild.php运行svn update并获取最新的代码更改以及任何chown或chmod文件权限,并重置任何特定于服务器的配置文件config.php。设置它以使apache用户可以运行svn更新有点棘手,但是一旦你做了beta /测试服务器总是有最新的提交代码。 CruseControl和其他几个人也可以帮助你做这类事情并添加单元测试等 现在,您的首席开发人员仍然需要将开发分支合并到Production One中,在开发服务器上进行测试,查看其他人的提交并决定如何以及何时推出发布,但是您不要承担责任他解决每一场冲突并融合每一个变化。 您的开发人员不会将文件或ssh远程连接到服务器,它们只是在IDE中本地工作,并通过svn(以及电子邮件,电话,聊天等)更新进行交互,以获取新代码并在完成任务时提交。 对于使用SVN的每个开发人员而言,我没有看到任何好的分支。合并这些分支可能在Git中起作用,但是对于SVN,您的主要开发人员将很快就会厌恶使用这种类型的设置。     
也许它不是很有帮助,但GIT听起来非常适合你的问题,我建议你去看看GIT的功能。如果你有时间检查Linus Torvalds他会自我谈论GIT。 http://www.youtube.com/watch?v=4XpnKHJAok8     
您描述的标准程序或多或少相同。我也为你的团队提供了这种方法。它也可以称为分阶段应用程序开发。 我是这样做的,我使用远程SVN主机(例如:assembla.com,unfuddle.com)来存储我的所有代码。我的团队成员将信息存储在这些远程svn服务器上。您也可以购买VPS并在那里设置SVN并使用相同的方法。 最佳实践是在本地进行测试,尽可能多地提交和提交,但每次提交都必须解决问题或包含添加任何新功能的重要段。 一旦所有人完成提交,首席开发人员就可以使用PuTTY等工具通过SSH登录到登台服务器。首席开发人员必须首先将代码签出到代码所在的文件夹中。在此阶段,如果多个开发人员编辑文件的同一段,则可能会出现文件冲突。然后,首席开发人员应首先解析代码,然后继续结帐。签出后,首席开发人员只需要在登台服务器上进行svn更新,以使代码保持最新状态。 基本思想是让代码在本地设置上运行,然后提交并更新用于在模拟场景上测试应用程序的分段,然后将其提交到实时站点。 有很多if和但是这里需要我写一章:)但简而言之,这就是热情。 工具(您可以在此设置下使用): - Tortoise SVN Manager - PuTTy - NetBeans 希望能帮助到你 :)     
我不喜欢与个人分支机构合作。我在ClearCase工作了近15年,尽管ClearCase可能比大多数人更好地处理个人分支,但仍然是一个巨大的痛苦。更糟糕的是,个人分支机构鼓励人们直到最后一刻才开始工作 - 通常是在重大发布之前的一两天。 出于这个原因,并强迫开发人员彼此保持正轨,我强烈建议所有人尽可能在一个分支(或在主干上)上一起工作。我一直告诉开发人员在进行更改时要小咬一口。 您听起来像是一种自动化部署的方法。也就是说,我在本地计算机上进行了更改,并使用单个命令确保服务器具有代码的副本。您还希望部署有效。如果更改2千兆字节,10,000文件部署的单个2千字节文件,则只需复制该文件,而不是10,000千兆字节。为此,我建议您在Ant中编写部署脚本。 您的开发人员可以修改文件,然后通过Ant脚本部署这些文件。开发人员不必记住他们更新了哪些文件,因为Ant会自动处理。事实上,Ant甚至可以修改文件,以确保它们在复制时包含正确的环境信息。当然,如果服务器上的设置与源存储库中的设置不同,Ant可以重新排列文件。 Netbeans和Eclipse都可以在IDE中执行Ant脚本。 所以: 让开发人员修改本地计算机上的代码。 运行Ant脚本以确保服务器和本地计算机同步。 在服务器上测试。 然后,一旦他们对服务器上的结果感到满意,请检查他们的更改。 有人提到像詹金斯这样的持续构建系统。无论如何,这实际上是一个好主意,即使它没有解决这个特定问题。詹金斯可以拥有自己的服务器和数据库。然后,当您提交代码时,Jenkins将更新服务器并运行自动化测试。然后Jenkins可以创建一个报告。这一切都显示在Jenkin的网页上。此外,您可以将您的部署存档在Jenkins上,因此,如果您告诉某人测试“Build#20”,他们可以简单地将其从Jenkins中删除,以便于查找。     

要回复问题请先登录注册